ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
class.ilExParticipantTableGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4include_once("./Services/Table/classes/class.ilTable2GUI.php");
5include_once("./Modules/Exercise/classes/class.ilExAssignment.php");
6include_once("./Modules/Exercise/classes/class.ilFSStorageExercise.php");
7include_once("./Services/Rating/classes/class.ilRatingGUI.php");
8
18{
19
23 function __construct($a_parent_obj, $a_parent_cmd, $a_exc, $a_part_id)
24 {
25 global $ilCtrl, $lng, $ilAccess, $lng;
26
27 $this->exc = $a_exc;
28 $this->exc_id = $this->exc->getId();
29
30 include_once("./Modules/Exercise/classes/class.ilExAssignment.php");
31
32 $this->part_id = $a_part_id;
33
34 $this->setId("exc_part_".$this->exc_id."_".$this->part_id);
35
36 include_once("./Services/User/classes/class.ilObjUser.php");
37
38 if ($this->part_id > 0)
39 {
40 $name = ilObjUser::_lookupName($this->part_id);
41 if(trim($name["login"]))
42 {
43 $this->user = new ilObjUser($this->part_id);
44 }
45 // #14650 - invalid user
46 else
47 {
48 $ilCtrl->setParameter($a_parent_obj, "part_id", "");
49 $ilCtrl->redirect($a_parent_obj, $a_parent_cmd);
50 }
51 }
52
53 parent::__construct($a_parent_obj, $a_parent_cmd);
54
55 //$this->setData(ilExAssignment::getMemberListData($this->exc_id, $this->ass_id));
57 $this->setData($data);
58
59//var_dump($data);
60
61 if ($this->part_id > 0)
62 {
63 $this->setTitle($lng->txt("exc_participant").": ".
64 $name["lastname"].", ".$name["firstname"]." [".$name["login"]."]");
65 }
66 else
67 {
68 $this->setTitle($lng->txt("exc_participant"));
69 }
70
71 $this->setTopCommands(true);
72 //$this->setLimit(9999);
73
74// $this->addColumn("", "", "1", true);
75 $this->addColumn($this->lng->txt("exc_assignment"), "order_val");
76 $this->addColumn($this->lng->txt("exc_submission"), "submission");
77 $this->addColumn($this->lng->txt("exc_grading"), "solved_time");
78// $this->addColumn($this->lng->txt("mail"), "feedback_time");
79 $this->addColumn($this->lng->txt("feedback"), "feedback_time");
80
81 $this->setDefaultOrderField("order_val");
82 $this->setDefaultOrderDirection("asc");
83
84 $this->setEnableHeader(true);
85 $this->setFormAction($ilCtrl->getFormAction($a_parent_obj));
86 $this->setRowTemplate("tpl.exc_participant_row.html", "Modules/Exercise");
87 //$this->disable("footer");
88 $this->setEnableTitle(true);
89// $this->setSelectAllCheckbox("assid");
90
91 if ($this->part_id > 0)
92 {
93 $this->addCommandButton("saveStatusParticipant", $lng->txt("exc_save_changes"));
94 }
95
96 include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
97 include_once "Services/UIComponent/Overlay/classes/class.ilOverlayGUI.php";
98 $this->overlay_tpl = new ilTemplate("tpl.exc_learner_comment_overlay.html", true, true, "Modules/Exercise");
99 }
100
104 function numericOrdering($a_f)
105 {
106 if (in_array($a_f, array("order_val")))
107 {
108 return true;
109 }
110 return false;
111 }
112
113
117 protected function fillRow($d)
118 {
119 global $lng, $ilCtrl;
120
121 $this->tpl->setVariable("TXT_ASS_TITLE", $d["title"]);
122
123 $file_info = ilExAssignment::getDownloadedFilesInfoForTableGUIS($this->parent_obj, $this->exc_id, $d["type"], $d["id"], $this->part_id, $this->parent_cmd);
124
125 $has_no_team_yet = false;
127 {
128 $members = ilExAssignment::getTeamMembersByAssignmentId($d["id"], $this->part_id);
129
130 // #11957
131 if(sizeof($members))
132 {
133 $this->tpl->setCurrentBlock("ass_members");
134 foreach($members as $member_id)
135 {
136 $this->tpl->setVariable("TXT_MEMBER_NAME",
137 ilObjUser::_lookupFullname($member_id));
138 $this->tpl->parseCurrentBlock();
139 }
140
141 $ilCtrl->setParameter($this->parent_obj, "lpart", $this->part_id);
142 $this->tpl->setVariable("HREF_LOG",
143 $ilCtrl->getLinkTarget($this->parent_obj, "showTeamLog"));
144 $this->tpl->setVariable("TXT_LOG", $lng->txt("exc_team_log"));
145 $ilCtrl->setParameter($this->parent_obj, "lpart", "");
146 }
147 else
148 {
149 // #11957
150 $has_no_team_yet = true;
151 $this->tpl->setCurrentBlock("team_info");
152 $this->tpl->setVariable("TXT_TEAM_INFO", $lng->txt("exc_no_team_yet"));
153 $this->tpl->setVariable("TXT_CREATE_TEAM", $lng->txt("exc_create_team"));
154
155 $ilCtrl->setParameter($this->parent_obj, "ass_id", $d["id"]);
156 $ilCtrl->setParameter($this->parent_obj, "lpart", $this->part_id);
157 $this->tpl->setVariable("URL_CREATE_TEAM",
158 $ilCtrl->getLinkTarget($this->getParentObject(), "createSingleMemberTeam"));
159 $ilCtrl->setParameter($this->parent_obj, "lpart", "");
160 $ilCtrl->setParameter($this->parent_obj, "ass_id", "");
161
162 if($file_info["files"]["count"])
163 {
164 $this->tpl->setVariable("TEAM_FILES_INFO", "<br />".
165 $file_info["files"]["txt"].": ".
166 $file_info["files"]["count"]);
167 }
168 $this->tpl->parseCurrentBlock();
169 }
170 }
171
172 if(!$has_no_team_yet)
173 {
174 $this->tpl->setVariable("VAL_CHKBOX",
175 ilUtil::formCheckbox(0, "assid[".$d["id"]."]",1));
176 $this->tpl->setVariable("VAL_ID",
177 $d["id"]);
178
179 $this->tpl->setVariable("VAL_LAST_SUBMISSION", $file_info["last_submission"]["value"]);
180 $this->tpl->setVariable("TXT_LAST_SUBMISSION", $file_info["last_submission"]["txt"]);
181
182 $this->tpl->setVariable("TXT_SUBMITTED_FILES", $file_info["files"]["txt"]);
183 $this->tpl->setVariable("VAL_SUBMITTED_FILES", $file_info["files"]["count"]);
184
185 if($file_info["files"]["download_url"])
186 {
187 $this->tpl->setCurrentBlock("download_link");
188 $this->tpl->setVariable("LINK_DOWNLOAD", $file_info["files"]["download_url"]);
189 $this->tpl->setVariable("TXT_DOWNLOAD", $file_info["files"]["download_txt"]);
190 $this->tpl->parseCurrentBlock();
191 }
192
193 if($file_info["files"]["download_new_url"])
194 {
195 $this->tpl->setCurrentBlock("download_link");
196 $this->tpl->setVariable("LINK_NEW_DOWNLOAD", $file_info["files"]["download_new_url"]);
197 $this->tpl->setVariable("TXT_NEW_DOWNLOAD", $file_info["files"]["download_new_txt"]);
198 $this->tpl->parseCurrentBlock();
199 }
200
201 // note
202 $this->tpl->setVariable("TXT_NOTE", $lng->txt("exc_note_for_tutor"));
203 $this->tpl->setVariable("NAME_NOTE",
204 "notice[".$d["id"]."]");
205 $this->tpl->setVariable("VAL_NOTE",
207
208 // comment for learner
209
210 $lcomment_value = ilExAssignment::lookupCommentForUser($d["id"], $this->part_id);
211
212 $overlay_id = "excasscomm_".$d["id"]."_".$this->part_id;
213 $overlay_trigger_id = $overlay_id."_tr";
214 $overlay = new ilOverlayGUI($overlay_id);
215 $overlay->setAnchor($overlay_trigger_id);
216 $overlay->setTrigger($overlay_trigger_id, "click", $overlay_trigger_id);
217 $overlay->add();
218
219 $this->tpl->setVariable("LCOMMENT_ID", $overlay_id."_snip");
220 $this->tpl->setVariable("LCOMMENT_SNIPPET", ilUtil::shortenText($lcomment_value, 25, true));
221 $this->tpl->setVariable("COMMENT_OVERLAY_TRIGGER_ID", $overlay_trigger_id);
222 $this->tpl->setVariable("COMMENT_OVERLAY_TRIGGER_TEXT", $lng->txt("exc_comment_for_learner_edit"));
223
224 $lcomment_form = new ilPropertyFormGUI();
225 $lcomment_form->setId($overlay_id);
226 $lcomment_form->setPreventDoubleSubmission(false);
227
228 $lcomment = new ilTextAreaInputGUI($lng->txt("exc_comment_for_learner"), "lcomment_".$d["id"]."_".$this->part_id);
229 $lcomment->setInfo($lng->txt("exc_comment_for_learner_info"));
230 $lcomment->setValue($lcomment_value);
231 $lcomment->setCols(45);
232 $lcomment->setRows(5);
233 $lcomment_form->addItem($lcomment);
234
235 $lcomment_form->addCommandButton("save", $lng->txt("save"));
236 // $lcomment_form->addCommandButton("cancel", $lng->txt("cancel"));
237
238 $this->overlay_tpl->setCurrentBlock("overlay_bl");
239 $this->overlay_tpl->setVariable("COMMENT_OVERLAY_ID", $overlay_id);
240 $this->overlay_tpl->setVariable("COMMENT_OVERLAY_FORM", $lcomment_form->getHTML());
241 $this->overlay_tpl->parseCurrentBlock();
242
243 /*
244 $this->tpl->setVariable("TXT_LCOMMENT", $lng->txt("exc_comment_for_learner"));
245 $this->tpl->setVariable("NAME_LCOMMENT",
246 "lcomment[".$d["id"]."]");
247 $lpcomment = ilExAssignment::lookupCommentForUser($d["id"], $this->part_id);
248 $this->tpl->setVariable("VAL_LCOMMENT",
249 ilUtil::prepareFormOutput($lpcomment));
250 */
251
252 // solved
253 //$this->tpl->setVariable("CHKBOX_SOLVED",
254 // ilUtil::formCheckbox($this->exc->members_obj->getStatusByMember($member_id),"solved[$member_id]",1));
255 $status = ilExAssignment::lookupStatusOfUser($d["id"], $this->part_id);
256 $this->tpl->setVariable("SEL_".strtoupper($status), ' selected="selected" ');
257 $this->tpl->setVariable("TXT_NOTGRADED", $lng->txt("exc_notgraded"));
258 $this->tpl->setVariable("TXT_PASSED", $lng->txt("exc_passed"));
259 $this->tpl->setVariable("TXT_FAILED", $lng->txt("exc_failed"));
260 if (($sd = ilExAssignment::lookupStatusTimeOfUser($d["id"], $this->part_id)) > 0)
261 {
262 $this->tpl->setCurrentBlock("status_date");
263 $this->tpl->setVariable("TXT_LAST_CHANGE", $lng->txt("last_change"));
264 $this->tpl->setVariable('VAL_STATUS_DATE',
266 $this->tpl->parseCurrentBlock();
267 }
268 switch($status)
269 {
270 case "passed": $pic = "scorm/passed.svg"; break;
271 case "failed": $pic = "scorm/failed.svg"; break;
272 default: $pic = "scorm/not_attempted.svg"; break;
273 }
274 $this->tpl->setVariable("IMG_STATUS", ilUtil::getImagePath($pic));
275 $this->tpl->setVariable("ALT_STATUS", $lng->txt("exc_".$status));
276
277 // mark
278 $this->tpl->setVariable("TXT_MARK", $lng->txt("exc_mark"));
279 $this->tpl->setVariable("NAME_MARK",
280 "mark[".$d["id"]."]");
281 $mark = ilExAssignment::lookupMarkOfUser($d["id"], $this->part_id);
282 $this->tpl->setVariable("VAL_MARK",
284
285 // feedback
286 $ilCtrl->setParameter($this->parent_obj, "member_id", $this->part_id);
287 if (($ft = ilExAssignment::lookupFeedbackTimeOfUser($d["id"], $this->part_id)) > 0)
288 {
289 $this->tpl->setCurrentBlock("feedback_date");
290 $this->tpl->setVariable("TXT_FEEDBACK_MAIL_SENT",
291 sprintf($lng->txt("exc_sent_at"),
293 $this->tpl->parseCurrentBlock();
294 }
295 $ilCtrl->setParameter($this, "rcp_to", $this->user->getLogin());
296 $this->tpl->setVariable("LINK_FEEDBACK",
297 $ilCtrl->getLinkTarget($this->parent_obj, "redirectFeedbackMail"));
298 //"ilias.php?baseClass=ilMailGUI&type=new&rcp_to=".$mem_obj->getLogin());
299 $this->tpl->setVariable("TXT_FEEDBACK",
300 $lng->txt("exc_send_mail"));
301 $ilCtrl->setParameter($this->parent_obj, "rcp_to", "");
302
304 {
305 $feedback_id = "t".ilExAssignment::getTeamIdByAssignment($d["id"], $this->part_id);
306 }
307 else
308 {
309 $feedback_id = $this->part_id;
310 }
311
312 $storage = new ilFSStorageExercise($this->exc_id, $d["id"]);
313 $cnt_files = $storage->countFeedbackFiles($feedback_id);
314 $ilCtrl->setParameter($this->parent_obj, "fsmode", "feedbackpart");
315 $this->tpl->setVariable("LINK_FILE_FEEDBACK",
316 $ilCtrl->getLinkTargetByClass("ilfilesystemgui", "listFiles"));
317 if ($cnt_files == 0)
318 {
319 $this->tpl->setVariable("TXT_FILE_FEEDBACK",
320 $lng->txt("exc_add_feedback_file"));
321 }
322 else
323 {
324 $this->tpl->setVariable("TXT_FILE_FEEDBACK",
325 $lng->txt("exc_fb_files")." (".$cnt_files.")");
326 }
327
328 // peer review / rating
329 if($d["type"] != ilExAssignment::TYPE_UPLOAD_TEAM && $d["peer"])
330 {
331 $this->tpl->setCurrentBlock("peer_review_bl");
332 $this->tpl->setVariable("TXT_PEER_REVIEW", $lng->txt("exc_peer_review_show"));
333
334 $ilCtrl->setParameter($this->parent_obj, "grd", 2);
335 $this->tpl->setVariable("LINK_PEER_REVIEW",
336 $ilCtrl->getLinkTarget($this->parent_obj, "showPersonalPeerReview"));
337 $ilCtrl->setParameter($this->parent_obj, "grd", "");
338
339 $rating = new ilRatingGUI();
340 $rating->setObject($d["id"], "ass", $this->part_id, "peer");
341 $rating->setUserId(0);
342 $this->tpl->setVariable("VAL_RATING", $rating->getHTML(true, false));
343
344 $this->tpl->parseCurrentBlock();
345 }
346
347 $ilCtrl->setParameter($this->parent_obj, "ass_id", $_GET["ass_id"]);
348 }
349 else
350 {
351 $this->tpl->touchBlock("member_has_no_team_bl");
352 }
353 }
354
355 public function render()
356 {
357 global $ilCtrl;
358
359 $url = $ilCtrl->getLinkTarget($this->getParentObject(), "saveCommentForLearners", "", true, false);
360 $this->overlay_tpl->setVariable("AJAX_URL", $url);
361
362 return parent::render().
363 $this->overlay_tpl->get();
364 }
365}
366?>
$_GET["client_id"]
const IL_CAL_DATETIME
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
lookupMarkOfUser($a_ass_id, $a_user_id)
Lookup user mark.
static getTeamMembersByAssignmentId($a_ass_id, $a_user_id)
Find team members by assignment and team member.
static lookupFeedbackTimeOfUser($a_ass_id, $a_user_id)
Get time when feedback mail has been sent.
lookupCommentForUser($a_ass_id, $a_user_id)
Lookup comment for the user.
lookupStatusOfUser($a_ass_id, $a_user_id)
was: getStatusByMember
static getDownloadedFilesInfoForTableGUIS($a_parent_obj, $a_exercise_id, $a_ass_type, $a_ass_id, $a_user_id, $a_parent_cmd=null)
lookupNoticeOfUser($a_ass_id, $a_user_id)
was: getNoticeByMember($a_member_id)
static getAssignmentDataOfExercise($a_exc_id)
Get assignments data of an exercise in an array.
static lookupStatusTimeOfUser($a_ass_id, $a_user_id)
Get status time.
__construct($a_parent_obj, $a_parent_cmd, $a_exc, $a_part_id)
Constructor.
numericOrdering($a_f)
Check whether field is numeric.
render()
render table @access public
_lookupFullname($a_user_id)
Lookup Full Name.
static _lookupName($a_user_id)
lookup user name
This is a utility class for the yui overlays.
This class represents a property form user interface.
Class ilRatingGUI.
Class ilTable2GUI.
setTopCommands($a_val)
Set top commands (display command buttons on top of table, too)
addColumn($a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="")
Add a column to the header.
setEnableHeader($a_enableheader)
Set Enable Header.
getParentObject()
Get parent object.
setTitle($a_title, $a_icon=0, $a_icon_alt=0)
Set title and title icon.
setData($a_data)
set table data @access public
setEnableTitle($a_enabletitle)
Set Enable Title.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
setId($a_val)
Set id.
setFormAction($a_form_action, $a_multipart=false)
Set Form action parameter.
setDefaultOrderDirection($a_defaultorderdirection)
Set Default order direction.
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
special template class to simplify handling of ITX/PEAR
This class represents a text area property in a property form.
static formCheckbox($checked, $varname, $value, $disabled=false)
??? @access public
static shortenText($a_str, $a_len, $a_dots=false, $a_next_blank=false, $a_keep_extension=false)
shorten a string to given length.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
global $ilCtrl
Definition: ilias.php:18
global $lng
Definition: privfeed.php:40