ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilContainerStartObjectsContentTableGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once('./Services/Table/classes/class.ilTable2GUI.php');
5 
14 {
15  protected $start_object; // [ilContainerStartObjects]
16  protected $item_list_guis; // [array]
17  protected $enable_desktop; // [bool]
18 
19  public function __construct($a_parent_obj, $a_parent_cmd, ilContainerStartObjects $a_start_objects, $a_enable_desktop = true)
20  {
21  global $lng, $ilCtrl;
22 
23  $this->lng = $lng;
24  $this->ctrl = $ilCtrl;
25 
26  $this->start_object = $a_start_objects;
27  $this->enable_desktop = (bool)$a_enable_desktop;
28 
29  parent::__construct($a_parent_obj, $a_parent_cmd);
30 
31  $this->addColumn($this->lng->txt('crs_nr'),'nr');
32  $this->addColumn($this->lng->txt('title'),'title');
33  $this->addColumn($this->lng->txt('crs_objective_accomplished'), 'status');
34  $this->addColumn($this->lng->txt('actions'), '');
35 
36  $this->setTitle($this->lng->txt('crs_table_start_objects'));
37  $this->setDescription($this->lng->txt('crs_info_start'));
38 
39  $this->setRowTemplate("tpl.start_objects_content_row.html", "Services/Container");
40  $this->setFormAction($this->ctrl->getFormAction($a_parent_obj));
41 
42  $this->setDefaultOrderField('nr');
43  $this->setDefaultOrderDirection('asc');
44 
45  $this->getItems();
46  }
47 
48  protected function getItems()
49  {
50  global $ilUser, $ilObjDataCache, $ilAccess;
51 
52  include_once './Modules/Course/classes/class.ilCourseLMHistory.php';
53  include_once './Services/Link/classes/class.ilLink.php';
54 
55  $lm_continue = new ilCourseLMHistory($this->start_object->getRefId(),$ilUser->getId());
56  $continue_data = $lm_continue->getLMHistory();
57 
58  $items = array();
59  $counter = 0;
60  foreach($this->start_object->getStartObjects() as $start)
61  {
62  $obj_id = $ilObjDataCache->lookupObjId($start['item_ref_id']);
63  $ref_id = $start['item_ref_id'];
64  $type = $ilObjDataCache->lookupType($obj_id);
65 
66  if(!$ilAccess->checkAccess("visible", "", $ref_id))
67  {
68  continue;
69  }
70 
71  // start object status
72  if($this->start_object->isFullfilled($ilUser->getId(), $ref_id))
73  {
74  $accomplished = 'accomplished';
75  }
76  else
77  {
78  $accomplished = 'not_accomplished';
79  }
80 
81  // add/remove desktop
82  $actions = array();
83  if((bool)$this->enable_desktop)
84  {
85  // add to desktop link
86  if(!$ilUser->isDesktopItem($ref_id,$type))
87  {
88  if ($ilAccess->checkAccess('read','',$ref_id))
89  {
90  $this->ctrl->setParameter($this->getParentObject(),'item_ref_id',$ref_id);
91  $this->ctrl->setParameter($this->getParentObject(),'item_id',$ref_id);
92  $this->ctrl->setParameter($this->getParentObject(),'type',$type);
93  $url = $this->ctrl->getLinkTarget($this->getParentObject(),'addToDesk');
94  $actions[$url] = $this->lng->txt("to_desktop");
95  }
96  }
97  else
98  {
99  $this->ctrl->setParameter($this->getParentObject(),'item_ref_id',$ref_id);
100  $this->ctrl->setParameter($this->getParentObject(),'item_id',$ref_id);
101  $this->ctrl->setParameter($this->getParentObject(),'type',$type);
102  $url = $this->ctrl->getLinkTarget($this->getParentObject(),'removeFromDesk');
103  $actions[$url] = $this->lng->txt("unsubscribe");
104  }
105  }
106 
107  $default_params = null;
108  if($type == "tst")
109  {
110  $default_params["crs_show_result"] = $ref_id;
111  }
112  /* continue is currently inactive
113  if(isset($continue_data[$ref_id]))
114  {
115  // :TODO: should "continue" be default or 2nd link/action?
116  // $this->lng->txt('continue_work')
117  $default_params["obj_id"] = $continue_data[$ref_id]['lm_page_id'];
118  }
119  */
120 
121  if ($accomplished == 'accomplished')
122  {
123  $icon = ilUtil::getImagePath("icon_ok.svg");
124  }
125  else
126  {
127  $icon = ilUtil::getImagePath("icon_not_ok.svg");
128  }
129 
130  $items[] = array("nr" => ++$counter,
131  "obj_id" => $obj_id,
132  "ref_id" => $ref_id,
133  "type" => $type,
134  "append_default" => $default_params,
135  "title" => $ilObjDataCache->lookupTitle($obj_id),
136  "description" => $ilObjDataCache->lookupDescription($obj_id),
137  "status" => $this->lng->txt('crs_objective_'.$accomplished),
138  "status_img" => $icon,
139  "actions" => $actions);
140  }
141 
142  include_once("./Services/Object/classes/class.ilObjectListGUIPreloader.php");
144  foreach($items as $item)
145  {
146  $preloader->addItem($item["obj_id"], $item["type"], $item["ref_id"]);
147  }
148  $preloader->preload();
149  unset($preloader);
150 
151  reset($items);
152  $this->setData($items);
153  }
154 
163  protected function getItemListGUI($a_type)
164  {
165  global $objDefinition;
166 
167  if (!isset($this->item_list_guis[$a_type]))
168  {
169  $class = $objDefinition->getClassName($a_type);
170  // Fixed problem with deactivated plugins and existing repo. object plugin objects on the user's desktop
171  if(!$class)
172  {
173  return NULL;
174  }
175  // Fixed problem with deactivated plugins and existing repo. object plugin objects on the user's desktop
176  $location = $objDefinition->getLocation($a_type);
177  if(!$location)
178  {
179  return NULL;
180  }
181  $full_class = "ilObj".$class."ListGUI";
182  include_once($location."/class.".$full_class.".php");
183  $item_list_gui = new $full_class();
184  $this->item_list_guis[$a_type] = $item_list_gui;
185  }
186  else
187  {
188  $item_list_gui = $this->item_list_guis[$a_type];
189  }
190 
191  $item_list_gui->setDefaultCommandParameters(array());
192 
193  return $item_list_gui;
194  }
195 
202  protected function getListItem($a_item)
203  {
204  $item_list_gui = $this->getItemListGUI($a_item["type"]);
205  if(!$item_list_gui)
206  {
207  return;
208  }
209 
210  $item_list_gui->setContainerObject($this);
211  $item_list_gui->enableCommands(true, true);
212 
213  // ilObjectActivation::addListGUIActivationProperty($item_list_gui, $a_item);
214 
215  // notes, comment currently do not work properly
216  $item_list_gui->enableNotes(false);
217  $item_list_gui->enableComments(false);
218  $item_list_gui->enableTags(false);
219 
220  $item_list_gui->enableIcon(true);
221  $item_list_gui->enableDelete(false);
222  $item_list_gui->enableCut(false);
223  $item_list_gui->enableCopy(false);
224  $item_list_gui->enableLink(false);
225  $item_list_gui->enableInfoScreen(true);
226  $item_list_gui->enableSubscribe(false);
227 
228  $level = 3;
229 
230  if ($level < 3)
231  {
232  $item_list_gui->enableDescription(false);
233  $item_list_gui->enableProperties(false);
234  $item_list_gui->enablePreconditions(false);
235  }
236 
237  if($a_item["append_default"])
238  {
239  $item_list_gui->setDefaultCommandParameters($a_item["append_default"]);
240  }
241  if (is_object($item_list_gui))
242  {
243  return $item_list_gui->getListItemHTML($a_item["ref_id"],
244  $a_item["obj_id"], $a_item["title"], $a_item["description"]);
245  }
246  }
247 
248  public function fillRow($a_set)
249  {
250  $this->tpl->setVariable("VAL_NR", $a_set["nr"]);
251 
252  // begin-patch lok
253  $this->tpl->setVariable("TXT_TITLE", $this->getListItem($a_set));
254  /*
255  include_once './Modules/Course/classes/Objectives/class.ilLOSettings.php';
256  if(ilLOSettings::getInstanceByObjId($this->getParentObject()->object->getId())->isObjectiveTest($a_set['ref_id']))
257  {
258  $this->ctrl->setParameter($this->getParentObject(),'tid',$a_set['ref_id']);
259  $this->tpl->setVariable('TYPE_IMG',ilUtil::getTypeIconPath($a_set['type'], $a_set['obj_id'], 'small'));
260  $this->tpl->setVariable('TITLE_MANUAL_LINK',$this->ctrl->getLinkTargetByClass(get_class($this->getParentObject()),'redirectLocToTest'));
261  $this->tpl->setVariable('VAL_TITLE_MANUAL',$a_set['title']);
262  }
263  else
264  {
265  $this->tpl->setVariable('TYPE_IMG',ilUtil::getTypeIconPath($a_set['type'], $a_set['obj_id'], 'small'));
266  include_once './Services/Link/classes/class.ilLink.php';
267  $this->tpl->setVariable('TITLE_MANUAL_LINK',ilLink::_getLink($a_set['ref_id']));
268  $this->tpl->setVariable('VAL_TITLE_MANUAL',$a_set['title']);
269  }
270  // end-patch lok
271  */
272 
273  $this->tpl->setVariable("TXT_STATUS", $a_set["status"]);
274  $this->tpl->setVariable("IMG_STATUS", $a_set["status_img"]);
275 
276  if($a_set["actions"])
277  {
278  $this->tpl->setCurrentBlock("link");
279  foreach($a_set["actions"] as $url => $caption)
280  {
281  $this->tpl->setVariable("LINK_HREF", $url);
282  $this->tpl->setVariable("LINK_NAME", $caption);
283  }
284  $this->tpl->parseCurrentBlock();
285  }
286  }
287 }
288 
289 ?>
setDescription($a_val)
Set description.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
__construct($a_parent_obj, $a_parent_cmd, ilContainerStartObjects $a_start_objects, $a_enable_desktop=true)
$location
Definition: buildRTE.php:44
$url
Definition: shib_logout.php:72
getParentObject()
Get parent object.
global $ilCtrl
Definition: ilias.php:18
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
$counter
Preloader for object list GUIs.
$a_type
Definition: workflow.php:93
Class ilTable2GUI.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
$ilUser
Definition: imgupload.php:18
setRowTemplate($a_template, $a_template_dir="")
Set row template.
Create styles array
The data for the language used.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
$ref_id
Definition: sahs_server.php:39
global $lng
Definition: privfeed.php:17
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.
class ilCourseLMHistory