ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilSurveyQuestionsTableGUI.php
Go to the documentation of this file.
1 <?php
2 /*
3  +-----------------------------------------------------------------------------+
4  | ILIAS open source |
5  +-----------------------------------------------------------------------------+
6  | Copyright (c) 1998-2006 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 
24 include_once('./Services/Table/classes/class.ilTable2GUI.php');
25 
35 {
39  protected $rbacreview;
40 
44  protected $user;
45 
46  protected $editable = true;
47  protected $writeAccess = false;
48 
56  public function __construct($a_parent_obj, $a_parent_cmd, $a_write_access = false)
57  {
58  global $DIC;
59 
60  $this->rbacreview = $DIC->rbac()->review();
61  $this->user = $DIC->user();
62  $this->setId("spl");
63  $this->setPrefix('q_id'); // #16982
64 
65  parent::__construct($a_parent_obj, $a_parent_cmd);
66 
67  $lng = $DIC->language();
68  $ilCtrl = $DIC->ctrl();
69 
70  $this->lng = $lng;
71  $this->ctrl = $ilCtrl;
72 
73  $this->setWriteAccess($a_write_access);
74 
75  //$qplSetting = new ilSetting("spl");
76 
77  //$this->setFormName('questionbrowser');
78  //$this->setStyle('table', 'fullwidth');
79 
80  if ($this->getWriteAccess()) {
81  $this->addColumn('', '', '1%');
82  }
83 
84  $this->addColumn($this->lng->txt("title"), 'title', '');
85  $this->addColumn($this->lng->txt("obligatory"), "");
86 
87  foreach ($this->getSelectedColumns() as $c) {
88  if (strcmp($c, 'description') == 0) {
89  $this->addColumn($this->lng->txt("description"), 'description', '');
90  }
91  if (strcmp($c, 'type') == 0) {
92  $this->addColumn($this->lng->txt("question_type"), 'type', '');
93  }
94  if (strcmp($c, 'author') == 0) {
95  $this->addColumn($this->lng->txt("author"), 'author', '');
96  }
97  if (strcmp($c, 'created') == 0) {
98  $this->addColumn($this->lng->txt("create_date"), 'created', '');
99  }
100  if (strcmp($c, 'updated') == 0) {
101  $this->addColumn($this->lng->txt("last_update"), 'tstamp', '');
102  }
103  }
104 
105  $this->addColumn("", "");
106 
107  if ($this->getWriteAccess()) {
108  $this->setSelectAllCheckbox('q_id');
109 
110  $this->addMultiCommand('copy', $this->lng->txt('copy'));
111  $this->addMultiCommand('move', $this->lng->txt('move'));
112  $this->addMultiCommand('exportQuestion', $this->lng->txt('export'));
113  $this->addMultiCommand('deleteQuestions', $this->lng->txt('delete'));
114 
115  if (array_key_exists("spl_clipboard", $_SESSION)) {
116  $this->addCommandButton('paste', $this->lng->txt('paste'));
117  }
118 
119  $this->addCommandButton("saveObligatory", $this->lng->txt("spl_save_obligatory_state"));
120  }
121 
122 
123  $this->setRowTemplate("tpl.il_svy_qpl_questions_row.html", "Modules/SurveyQuestionPool");
124 
125  $this->setFormAction($this->ctrl->getFormAction($a_parent_obj, $a_parent_cmd));
126  $this->setDefaultOrderField("title");
127  $this->setDefaultOrderDirection("asc");
128 
129  $this->setShowRowsSelector(true);
130 
131  //$this->enable('sort');
132  //$this->enable('header');
133  //$this->enable('select_all');
134  $this->setFilterCommand('filterQuestionBrowser');
135  $this->setResetCommand('resetfilterQuestionBrowser');
136 
137  $this->initFilter();
138  }
139 
143  public function initFilter()
144  {
145  $lng = $this->lng;
148 
149  // title
150  include_once("./Services/Form/classes/class.ilTextInputGUI.php");
151  $ti = new ilTextInputGUI($lng->txt("title"), "title");
152  $ti->setMaxLength(64);
153  $ti->setSize(20);
154  $ti->setValidationRegexp('/^[^%]+$/is');
155  $this->addFilterItem($ti);
156  $ti->readFromSession();
157  $this->filter["title"] = $ti->getValue();
158 
159  // description
160  $ti = new ilTextInputGUI($lng->txt("description"), "description");
161  $ti->setMaxLength(64);
162  $ti->setSize(20);
163  $ti->setValidationRegexp('/^[^%]+$/is');
164  $this->addFilterItem($ti);
165  $ti->readFromSession();
166  $this->filter["description"] = $ti->getValue();
167 
168  // author
169  $ti = new ilTextInputGUI($lng->txt("author"), "author");
170  $ti->setMaxLength(64);
171  $ti->setSize(20);
172  $ti->setValidationRegexp('/^[^%]+$/is');
173  $this->addFilterItem($ti);
174  $ti->readFromSession();
175  $this->filter["author"] = $ti->getValue();
176 
177  // questiontype
178  include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
179  include_once("./Modules/SurveyQuestionPool/classes/class.ilObjSurveyQuestionPool.php");
180  $types = ilObjSurveyQuestionPool::_getQuestionTypes();
181  $options = array();
182  $options[""] = $lng->txt('filter_all_question_types');
183  foreach ($types as $translation => $row) {
184  $options[$row['type_tag']] = $translation;
185  }
186 
187  $si = new ilSelectInputGUI($this->lng->txt("question_type"), "type");
188  $si->setOptions($options);
189  $this->addFilterItem($si);
190  $si->readFromSession();
191  $this->filter["type"] = $si->getValue();
192  }
193 
194  public function getSelectableColumns()
195  {
196  $lng = $this->lng;
197  $cols["description"] = array(
198  "txt" => $lng->txt("description"),
199  "default" => true
200  );
201  $cols["type"] = array(
202  "txt" => $lng->txt("question_type"),
203  "default" => true
204  );
205  $cols["author"] = array(
206  "txt" => $lng->txt("author"),
207  "default" => true
208  );
209  $cols["created"] = array(
210  "txt" => $lng->txt("create_date"),
211  "default" => true
212  );
213  $cols["updated"] = array(
214  "txt" => $lng->txt("last_update"),
215  "default" => true
216  );
217  return $cols;
218  }
219 
227  public function fillRow($data)
228  {
229  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
230  include_once "./Modules/SurveyQuestionPool/classes/class.SurveyQuestionGUI.php";
231  $class = strtolower(SurveyQuestionGUI::_getGUIClassNameForId($data["question_id"]));
232  $guiclass = $class . "GUI";
233  $this->ctrl->setParameterByClass(strtolower($guiclass), "q_id", $data["question_id"]);
234 
235  if ($this->getEditable()) {
236  $url_edit = $this->ctrl->getLinkTargetByClass(strtolower($guiclass), "editQuestion");
237 
238  $this->tpl->setCurrentBlock("title_link_bl");
239  $this->tpl->setVariable("QUESTION_TITLE_LINK", $data["title"]);
240  $this->tpl->setVariable("URL_TITLE", $url_edit);
241  $this->tpl->parseCurrentBlock();
242  } else {
243  $this->tpl->setCurrentBlock("title_nolink_bl");
244  $this->tpl->setVariable("QUESTION_TITLE", $data["title"]);
245  $this->tpl->parseCurrentBlock();
246  }
247 
248  if ($data["complete"] == 0) {
249  $this->tpl->setCurrentBlock("qpl_warning");
250  $this->tpl->setVariable("IMAGE_WARNING", ilUtil::getImagePath("icon_alert.svg"));
251  $this->tpl->setVariable("ALT_WARNING", $this->lng->txt("warning_question_not_complete"));
252  $this->tpl->setVariable("TITLE_WARNING", $this->lng->txt("warning_question_not_complete"));
253  $this->tpl->parseCurrentBlock();
254  }
255 
256  foreach ($this->getSelectedColumns() as $c) {
257  if (strcmp($c, 'description') == 0) {
258  $this->tpl->setCurrentBlock('description');
259  $this->tpl->setVariable("QUESTION_COMMENT", (strlen($data["description"])) ? $data["description"] : "&nbsp;");
260  $this->tpl->parseCurrentBlock();
261  }
262  if (strcmp($c, 'type') == 0) {
263  $this->tpl->setCurrentBlock('type');
264  $this->tpl->setVariable("QUESTION_TYPE", SurveyQuestion::_getQuestionTypeName($data["type_tag"]));
265  $this->tpl->parseCurrentBlock();
266  }
267  if (strcmp($c, 'author') == 0) {
268  $this->tpl->setCurrentBlock('author');
269  $this->tpl->setVariable("QUESTION_AUTHOR", $data["author"]);
270  $this->tpl->parseCurrentBlock();
271  }
272  if (strcmp($c, 'created') == 0) {
273  $this->tpl->setCurrentBlock('created');
274  $this->tpl->setVariable("QUESTION_CREATED", ilDatePresentation::formatDate(new ilDate($data['created'], IL_CAL_UNIX)));
275  $this->tpl->parseCurrentBlock();
276  }
277  if (strcmp($c, 'updated') == 0) {
278  $this->tpl->setCurrentBlock('updated');
279  $this->tpl->setVariable("QUESTION_UPDATED", ilDatePresentation::formatDate(new ilDate($data["tstamp"], IL_CAL_UNIX)));
280  $this->tpl->parseCurrentBlock();
281  }
282  }
283 
284  // actions
285  include_once "Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php";
287  $list->setId($data["question_id"]);
288  $list->setListTitle($this->lng->txt("actions"));
289  if ($url_edit) {
290  $list->addItem($this->lng->txt("edit"), "", $url_edit);
291  }
292  $list->addItem($this->lng->txt("preview"), "", $this->ctrl->getLinkTargetByClass(strtolower($guiclass), "preview"));
293  $this->tpl->setVariable("ACTION", $list->getHTML());
294  $this->tpl->parseCurrentBlock();
295 
296  // obligatory
297  if ($this->getEditable()) {
298  $checked = $data["obligatory"] ? " checked=\"checked\"" : "";
299  $obligatory = "<input type=\"checkbox\" name=\"obligatory_" .
300  $data["question_id"] . "\" value=\"1\"" . $checked . " />";
301  } elseif ($data["obligatory"]) {
302  $obligatory = "<img src=\"" . ilUtil::getImagePath("obligatory.png", "Modules/Survey") .
303  "\" alt=\"" . $this->lng->txt("question_obligatory") .
304  "\" title=\"" . $this->lng->txt("question_obligatory") . "\" />";
305  }
306  $this->tpl->setVariable("OBLIGATORY", $obligatory);
307 
308  if ($this->getWriteAccess()) {
309  $this->tpl->setVariable('CBOX_ID', $data["question_id"]);
310  }
311  $this->tpl->setVariable('QUESTION_ID', $data["question_id"]);
312  }
313 
314  public function setEditable($value)
315  {
316  $this->editable = $value;
317  }
318 
319  public function getEditable()
320  {
321  return $this->editable;
322  }
323 
324  public function setWriteAccess($value)
325  {
326  $this->writeAccess = $value;
327  }
328 
329  public function getWriteAccess()
330  {
331  return $this->writeAccess;
332  }
333 }
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
if(isset($_REQUEST['delete'])) $list
Definition: registry.php:41
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
$_SESSION["AccountId"]
This class represents a selection list property in a property form.
global $DIC
Definition: saml.php:7
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date public.
addFilterItem($a_input_item, $a_optional=false)
Add filter item.
static _getQuestionTypeName($type_tag)
Return the translation for a given question type tag.
const IL_CAL_UNIX
setId($a_val)
Set id.
user()
Definition: user.php:4
global $ilCtrl
Definition: ilias.php:18
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
Class ilTable2GUI.
Class for single dates.
setResetCommand($a_val, $a_caption=null)
Set reset filter command.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
addMultiCommand($a_cmd, $a_text)
Add Command button.
This class represents a text property in a property form.
setPrefix($a_prefix)
$ilUser
Definition: imgupload.php:18
getSelectedColumns()
Get selected columns.
setMaxLength($a_maxlength)
Set Max Length.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
Create styles array
The data for the language used.
User interface class for advanced drop-down selection lists.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
static _getGUIClassNameForId($a_q_id)
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.
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.
__construct($a_parent_obj, $a_parent_cmd, $a_write_access=false)
Constructor.
$cols
Definition: xhr_table.php:11
if(!isset($_REQUEST['ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20
setFilterCommand($a_val, $a_caption=null)
Set filter command.