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");
 
   23        function __construct($a_parent_obj, $a_parent_cmd, $a_exc, $a_part_id)
 
   28                $this->exc_id = $this->exc->getId();
 
   30                include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
   32                $this->part_id = $a_part_id;
 
   34                $this->
setId(
"exc_part_".$this->exc_id.
"_".$this->part_id);
 
   36                include_once(
"./Services/User/classes/class.ilObjUser.php");
 
   38                if ($this->part_id > 0)
 
   41                        if(trim($name[
"login"]))
 
   43                                $ilCtrl->setParameter($a_parent_obj, 
"member_id", $this->part_id);
 
   44                                $this->user = 
new ilObjUser($this->part_id);
 
   49                                $ilCtrl->setParameter($a_parent_obj, 
"member_id", 
"");
 
   50                                $ilCtrl->setParameter($a_parent_obj, 
"part_id", 
"");    
 
   51                                $ilCtrl->redirect($a_parent_obj, $a_parent_cmd);
 
   55                parent::__construct($a_parent_obj, $a_parent_cmd);
 
   61                if ($this->part_id > 0)
 
   63                        $this->
setTitle($lng->txt(
"exc_participant").
": ".
 
   64                                $name[
"lastname"].
", ".$name[
"firstname"].
" [".$name[
"login"].
"]");
 
   68                        $this->
setTitle($lng->txt(
"exc_participant"));
 
   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");
 
   79                $this->
addColumn($this->lng->txt(
"feedback"), 
"feedback_time");
 
   86                $this->
setRowTemplate(
"tpl.exc_participant_row.html", 
"Modules/Exercise");
 
   91                if ($this->part_id > 0)
 
   93                        $this->
addCommandButton(
"saveStatusParticipant", $lng->txt(
"exc_save_changes"));
 
   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");
 
  101                if(!$ilAccess->checkAccessOfUser($a_part_id, 
"read",
"", $this->exc->getRefId()) &&
 
  102                        is_array(
$info = $ilAccess->getInfo()))
 
  113                if (in_array($a_f, array(
"order_val")))
 
  128                $ilCtrl->setParameter($this->parent_obj, 
"ass_id", 
$d[
"id"]);
 
  129                $ilCtrl->setParameter($this->parent_obj, 
"member_id", $this->part_id);
 
  131                $this->tpl->setVariable(
"TXT_ASS_TITLE", 
$d[
"title"]);                                  
 
  134                $member_status = $assignment->getMemberStatus($this->part_id);
 
  136                $file_info = $submission->getDownloadedFilesInfoForTableGUIS($this->parent_obj, $this->parent_cmd);
 
  138                $has_no_team_yet = 
false;
 
  139                if($assignment->hasTeam())
 
  141                        $members = $submission->getTeam()->getMembers();
 
  146                                $this->tpl->setCurrentBlock(
"ass_members");
 
  147                                foreach($members as $member_id)
 
  149                                        $this->tpl->setVariable(
"TXT_MEMBER_NAME", 
 
  151                                        $this->tpl->parseCurrentBlock();                                        
 
  154                                $this->tpl->setVariable(
"HREF_LOG", 
 
  155                                        $ilCtrl->getLinkTargetByClass(
"ilExSubmissionTeamGUI", 
"showTeamLog"));
 
  156                                $this->tpl->setVariable(
"TXT_LOG", 
$lng->txt(
"exc_team_log"));                          
 
  161                                $has_no_team_yet = 
true;
 
  162                                $this->tpl->setCurrentBlock(
"team_info");
 
  163                                $this->tpl->setVariable(
"TXT_TEAM_INFO", 
$lng->txt(
"exc_no_team_yet"));
 
  164                                $this->tpl->setVariable(
"TXT_CREATE_TEAM", 
$lng->txt(
"exc_create_team"));
 
  166                                $this->tpl->setVariable(
"URL_CREATE_TEAM",                                              
 
  167                                        $ilCtrl->getLinkTargetByClass(
"ilExSubmissionTeamGUI", 
"createSingleMemberTeam"));
 
  169                                if($file_info[
"files"][
"count"])
 
  171                                        $this->tpl->setVariable(
"TEAM_FILES_INFO", 
"<br />".
 
  172                                                $file_info[
"files"][
"txt"].
": ".
 
  173                                                $file_info[
"files"][
"count"]);
 
  175                                $this->tpl->parseCurrentBlock();
 
  179                if(!$has_no_team_yet)
 
  181                        $this->tpl->setVariable(
"VAL_CHKBOX",
 
  183                        $this->tpl->setVariable(
"VAL_ID",
 
  186                        $this->tpl->setVariable(
"VAL_LAST_SUBMISSION", $file_info[
"last_submission"][
"value"]);
 
  187                        $this->tpl->setVariable(
"TXT_LAST_SUBMISSION", $file_info[
"last_submission"][
"txt"]);
 
  189                        $this->tpl->setVariable(
"TXT_SUBMITTED_FILES", $file_info[
"files"][
"txt"]);
 
  190                        $this->tpl->setVariable(
"VAL_SUBMITTED_FILES", $file_info[
"files"][
"count"]);
 
  192                        if($file_info[
"files"][
"download_url"])
 
  194                                $this->tpl->setCurrentBlock(
"download_link");
 
  195                                $this->tpl->setVariable(
"LINK_DOWNLOAD", $file_info[
"files"][
"download_url"]);
 
  196                                $this->tpl->setVariable(
"TXT_DOWNLOAD", $file_info[
"files"][
"download_txt"]);           
 
  197                                $this->tpl->parseCurrentBlock();
 
  200                        if($file_info[
"files"][
"download_new_url"])
 
  202                                $this->tpl->setCurrentBlock(
"download_link");
 
  203                                $this->tpl->setVariable(
"LINK_NEW_DOWNLOAD", $file_info[
"files"][
"download_new_url"]);
 
  204                                $this->tpl->setVariable(
"TXT_NEW_DOWNLOAD", $file_info[
"files"][
"download_new_txt"]);           
 
  205                                $this->tpl->parseCurrentBlock();
 
  209                        $this->tpl->setVariable(
"TXT_NOTE", 
$lng->txt(
"exc_note_for_tutor"));
 
  210                        $this->tpl->setVariable(
"NAME_NOTE",
 
  211                                "notice[".
$d[
"id"].
"]");
 
  212                        $this->tpl->setVariable(
"VAL_NOTE",
 
  217                        $lcomment_value = $member_status->getComment();
 
  219                        $overlay_id = 
"excasscomm_".$d[
"id"].
"_".$this->part_id;
 
  220                        $overlay_trigger_id = $overlay_id.
"_tr";
 
  222                        $overlay->setAnchor($overlay_trigger_id);
 
  223                        $overlay->setTrigger($overlay_trigger_id, 
"click", $overlay_trigger_id);
 
  226                        $this->tpl->setVariable(
"LCOMMENT_ID", $overlay_id.
"_snip");
 
  227                        $this->tpl->setVariable(
"LCOMMENT_SNIPPET", 
ilUtil::shortenText($lcomment_value, 25, 
true));
 
  228                        $this->tpl->setVariable(
"COMMENT_OVERLAY_TRIGGER_ID", $overlay_trigger_id);
 
  229                        $this->tpl->setVariable(
"COMMENT_OVERLAY_TRIGGER_TEXT", 
$lng->txt(
"exc_comment_for_learner_edit"));
 
  232                        $lcomment_form->setId($overlay_id);
 
  233                        $lcomment_form->setPreventDoubleSubmission(
false);
 
  235                        $lcomment = 
new ilTextAreaInputGUI(
$lng->txt(
"exc_comment_for_learner"), 
"lcomment_".$d[
"id"].
"_".$this->part_id);
 
  236                        $lcomment->setInfo(
$lng->txt(
"exc_comment_for_learner_info"));
 
  237                        $lcomment->setValue($lcomment_value);
 
  238                        $lcomment->setCols(45);
 
  239                        $lcomment->setRows(5);                  
 
  240                        $lcomment_form->addItem($lcomment);
 
  242                        $lcomment_form->addCommandButton(
"save", 
$lng->txt(
"save"));
 
  245                        $this->overlay_tpl->setCurrentBlock(
"overlay_bl");                      
 
  246                        $this->overlay_tpl->setVariable(
"COMMENT_OVERLAY_ID", $overlay_id);
 
  247                        $this->overlay_tpl->setVariable(
"COMMENT_OVERLAY_FORM", $lcomment_form->getHTML());
 
  248                        $this->overlay_tpl->parseCurrentBlock();
 
  250                        $status = $member_status->getStatus();
 
  251                        $this->tpl->setVariable(
"SEL_".strtoupper($status), 
' selected="selected" ');
 
  252                        $this->tpl->setVariable(
"TXT_NOTGRADED", 
$lng->txt(
"exc_notgraded"));
 
  253                        $this->tpl->setVariable(
"TXT_PASSED", 
$lng->txt(
"exc_passed"));
 
  254                        $this->tpl->setVariable(
"TXT_FAILED", 
$lng->txt(
"exc_failed"));
 
  255                        if (($sd = $member_status->getStatusTime()) > 0)
 
  257                                $this->tpl->setCurrentBlock(
"status_date");
 
  258                                $this->tpl->setVariable(
"TXT_LAST_CHANGE", 
$lng->txt(
"last_change"));
 
  259                                $this->tpl->setVariable(
'VAL_STATUS_DATE',
 
  261                                $this->tpl->parseCurrentBlock();
 
  263                        $pic = $member_status->getStatusIcon();
 
  265                        $this->tpl->setVariable(
"ALT_STATUS", 
$lng->txt(
"exc_".$status));
 
  268                        $this->tpl->setVariable(
"TXT_MARK", 
$lng->txt(
"exc_mark"));
 
  269                        $this->tpl->setVariable(
"NAME_MARK",
 
  270                                "mark[".
$d[
"id"].
"]");
 
  271                        $mark = $member_status->getMark();
 
  275                        if (($ft = $member_status->getFeedbackTime()) > 0)
 
  277                                $this->tpl->setCurrentBlock(
"feedback_date");
 
  278                                $this->tpl->setVariable(
"TXT_FEEDBACK_MAIL_SENT",
 
  279                                        sprintf(
$lng->txt(
"exc_sent_at"),
 
  281                                $this->tpl->parseCurrentBlock();
 
  283                        $ilCtrl->setParameter($this->parent_obj, 
"rcp_to", $this->user->getLogin());
 
  284                        $this->tpl->setVariable(
"LINK_FEEDBACK",
 
  285                                $ilCtrl->getLinkTarget($this->parent_obj, 
"redirectFeedbackMail"));
 
  287                        $this->tpl->setVariable(
"TXT_FEEDBACK",
 
  288                                $lng->txt(
"exc_send_mail"));
 
  289                        $ilCtrl->setParameter($this->parent_obj, 
"rcp_to", 
"");
 
  292                        $cnt_files = $storage->countFeedbackFiles($submission->getFeedbackId());                        
 
  293                        $this->tpl->setVariable(
"LINK_FILE_FEEDBACK",
 
  294                                $ilCtrl->getLinkTargetByClass(
"ilfilesystemgui", 
"listFiles"));                 
 
  297                                $this->tpl->setVariable(
"TXT_FILE_FEEDBACK",
 
  298                                        $lng->txt(
"exc_add_feedback_file"));
 
  302                                $this->tpl->setVariable(
"TXT_FILE_FEEDBACK",
 
  303                                        $lng->txt(
"exc_fb_files").
" (".$cnt_files.
")");
 
  307                        if($peer_review = $submission->getPeerReview())
 
  310                                $given = $peer_review->countGivenFeedback(
true, $this->part_id);
 
  311                                $received = 
sizeof($peer_review->getPeerReviewsByPeerId($this->part_id, 
true));
 
  313                                $this->tpl->setCurrentBlock(
"peer_review_bl");
 
  315                                $this->tpl->setVariable(
"LINK_PEER_REVIEW_GIVEN", 
 
  316                                        $ilCtrl->getLinkTargetByClass(
"ilexpeerreviewgui", 
"showGivenPeerReview"));
 
  317                                $this->tpl->setVariable(
"TXT_PEER_REVIEW_GIVEN", 
 
  318                                        $lng->txt(
"exc_peer_review_given").
" (".$given.
")");    
 
  320                                $this->tpl->setVariable(
"TXT_PEER_REVIEW_RECEIVED", 
 
  321                                        $lng->txt(
"exc_peer_review_show").
" (".$received.
")");                          
 
  322                                $this->tpl->setVariable(
"LINK_PEER_REVIEW_RECEIVED", 
 
  323                                        $ilCtrl->getLinkTargetByClass(
"ilexpeerreviewgui", 
"showReceivedPeerReview"));
 
  332                                $this->tpl->parseCurrentBlock();
 
  338                        $this->tpl->touchBlock(
"member_has_no_team_bl");
 
  341                $ilCtrl->setParameter($this->parent_obj, 
"ass_id", 
"");
 
  342                $ilCtrl->setParameter($this->parent_obj, 
"member_id", 
"");                              
 
  350                $this->overlay_tpl->setVariable(
"AJAX_URL", 
$url);
 
  352                return parent::render().
 
  353                        $this->overlay_tpl->get();
 
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
static getAssignmentDataOfExercise($a_exc_id)
Get assignments data of an exercise in an array.
Exercise participant table.
__construct($a_parent_obj, $a_parent_cmd, $a_exc, $a_part_id)
Constructor.
numericOrdering($a_f)
Check whether field is numeric.
fillRow($d)
Fill table row.
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.
setTopCommands($a_val)
Set top commands (display command buttons on top of table, too)
setEnableHeader($a_enableheader)
Set Enable Header.
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.
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.
setDescription($a_val)
Set description.
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