4include_once(
"./Services/Table/classes/class.ilTable2GUI.php");
 
    5include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
    6include_once(
"./Modules/Exercise/classes/class.ilExAssignmentMemberStatus.php");
 
    7include_once(
"./Modules/Exercise/classes/class.ilExAssignmentTeam.php");
 
    8include_once(
"./Modules/Exercise/classes/class.ilExSubmission.php");
 
   31        function __construct($a_parent_obj, $a_parent_cmd, $a_exc, $a_ass)
 
   36                $this->exc_id = $this->exc->getId();
 
   38                $this->ass_id = $this->ass->getId();
 
   39                $this->
setId(
"exc_mem_".$this->ass_id);
 
   42                include_once(
"./Modules/Exercise/classes/class.ilFSStorageExercise.php");
 
   44                include_once(
"./Modules/Exercise/classes/class.ilExAssignment.php");
 
   46                parent::__construct($a_parent_obj, $a_parent_cmd);
 
   48                $this->
setTitle($lng->txt(
"exc_assignment").
": ".$this->ass->getTitle());
 
   52                $data = $this->ass->getMemberListData();
 
   55                if($this->ass->hasTeam())
 
   62                        foreach(
$data as $item)
 
   64                                $team_id = $team_map[$item[
"usr_id"]];
 
   72                                        $team_id = 
"nty".$item[
"usr_id"];
 
   75                                if(!isset($tmp[$team_id]))
 
   77                                        $tmp[$team_id] = $item;
 
   80                                $tmp[$team_id][
"team"][$item[
"usr_id"]] = $item[
"name"];
 
   81                                $tmp[$team_id][
"team_id"] = $team_id;
 
   91                        if($ass_obj->getPeerReview())
 
   93                                include_once 
'./Services/Rating/classes/class.ilRatingGUI.php';
 
  101                if(!$this->ass->hasTeam())
 
  104                        if(in_array(
"image", $this->selected))
 
  106                                $this->
addColumn($this->lng->txt(
"image"), 
"", 
"1");
 
  108                        $this->
addColumn($this->lng->txt(
"name"), 
"name");
 
  109                        if(in_array(
"login", $this->selected))
 
  111                                $this->
addColumn($this->lng->txt(
"login"), 
"login");
 
  116                        $this->
addColumn($this->lng->txt(
"exc_team"));
 
  122                        $this->
addColumn($this->lng->txt(
"exc_exercise_sent"), 
"sent_time");
 
  124                $this->
addColumn($this->lng->txt(
"exc_submission"), 
"submission");
 
  125                $this->
addColumn($this->lng->txt(
"exc_grading"), 
"solved_time");
 
  126                $this->
addColumn($this->lng->txt(
"feedback"), 
"feedback_time");
 
  133                $this->
setRowTemplate(
"tpl.exc_members_row.html", 
"Modules/Exercise");
 
  138                $this->
addMultiCommand(
"saveStatusSelected", $lng->txt(
"exc_save_selected"));
 
  139                $this->
addMultiCommand(
"redirectFeedbackMail", $lng->txt(
"exc_send_mail"));
 
  140                $this->
addMultiCommand(
"sendMembers", $lng->txt(
"exc_send_assignment"));
 
  142                if($this->ass->hasTeam())
 
  144                        $this->
addMultiCommand(
"createTeams", $lng->txt(
"exc_team_multi_create"));
 
  145                        $this->
addMultiCommand(
"dissolveTeams", $lng->txt(
"exc_team_multi_dissolve"));
 
  148                $this->
addMultiCommand(
"confirmDeassignMembers", $lng->txt(
"exc_deassign_members"));    
 
  152                include_once 
"Services/Form/classes/class.ilPropertyFormGUI.php";
 
  153                include_once 
"Services/UIComponent/Overlay/classes/class.ilOverlayGUI.php";
 
  154                $this->overlay_tpl = 
new ilTemplate(
"tpl.exc_learner_comment_overlay.html", 
true, 
true, 
"Modules/Exercise");
 
  162                                "txt" => $this->lng->txt(
"image"),
 
  167                                "txt" => $this->lng->txt(
"login"),
 
  181                $ilCtrl->setParameter($this->parent_obj, 
"ass_id", $this->ass_id);
 
  182                $ilCtrl->setParameter($this->parent_obj, 
"member_id", $member[
"usr_id"]);
 
  184                include_once 
"./Services/Object/classes/class.ilObjectFactory.php";             
 
  185                $member_id = $member[
"usr_id"];
 
  192                $has_no_team_yet = (substr($member[
"team_id"], 0, 3) == 
"nty");
 
  193                $member_status = $this->ass->getMemberStatus($member_id);
 
  196                $this->tpl->setVariable(
"VAL_CHKBOX",
 
  198                $this->tpl->setVariable(
"VAL_ID", $member_id);          
 
  200                if(!$has_no_team_yet)
 
  205                                if ($member_status->getSent())
 
  207                                        $this->tpl->setCurrentBlock(
"mail_sent");
 
  208                                        if (($st = $member_status->getSentTime()) > 0)
 
  210                                                $this->tpl->setVariable(
"TXT_MAIL_SENT",
 
  211                                                        sprintf(
$lng->txt(
"exc_sent_at"),
 
  216                                                $this->tpl->setVariable(
"TXT_MAIL_SENT",
 
  219                                        $this->tpl->parseCurrentBlock();
 
  223                                        $this->tpl->setCurrentBlock(
"mail_sent");
 
  224                                        $this->tpl->setVariable(
"TXT_MAIL_SENT",
 
  226                                        $this->tpl->parseCurrentBlock();
 
  231                if(!isset($member[
"team"]))
 
  237                        if(!$has_no_team_yet)
 
  239                                $member_team = $this->teams[$member[
"team_id"]];
 
  246                        $submission = 
new ilExSubmission($this->ass, $member_id, $member_team);
 
  248                $file_info = $submission->getDownloadedFilesInfoForTableGUIS($this->parent_obj, $this->parent_cmd);
 
  251                if(!isset($member[
"team"]))
 
  253                        $this->tpl->setVariable(
"TXT_NAME",
 
  256                        if(in_array(
"login", $this->selected))
 
  258                                $this->tpl->setVariable(
"TXT_LOGIN",
 
  259                                        "[".$member[
"login"].
"]");
 
  262                        if(in_array(
"image", $this->selected))
 
  265                                $this->tpl->setVariable(
"USR_IMAGE",
 
  266                                        $mem_obj->getPersonalPicturePath(
"xxsmall"));
 
  267                                $this->tpl->setVariable(
"USR_ALT", 
$lng->txt(
"personal_picture"));
 
  271                        if(!$ilAccess->checkAccessOfUser($member_id, 
"read",
"", $this->exc->getRefId()) &&
 
  272                                is_array(
$info = $ilAccess->getInfo()))
 
  274                                $this->tpl->setCurrentBlock(
'access_warning');
 
  275                                $this->tpl->setVariable(
'PARENT_ACCESS', 
$info[0][
"text"]);
 
  276                                $this->tpl->parseCurrentBlock();
 
  282                        asort($member[
"team"]);
 
  283                        foreach($member[
"team"] as $team_member_id => $team_member_name) 
 
  285                                if(
sizeof($member[
"team"]) > 1)
 
  287                                        $ilCtrl->setParameterByClass(
"ilExSubmissionTeamGUI", 
"id", $team_member_id);
 
  288                                        $url = 
$ilCtrl->getLinkTargetByClass(
"ilExSubmissionTeamGUI", 
"confirmRemoveTeamMember");
 
  289                                        $ilCtrl->setParameterByClass(
"ilExSubmissionTeamGUI", 
"id", 
"");
 
  291                                        include_once 
"Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php";
 
  293                                        $this->tpl->setCurrentBlock(
"team_member_removal_bl");
 
  294                                        $this->tpl->setVariable(
"URL_TEAM_MEMBER_REMOVAL", 
$url);
 
  295                                        $this->tpl->setVariable(
"TXT_TEAM_MEMBER_REMOVAL", 
 
  297                                        $this->tpl->parseCurrentBlock();
 
  301                                if(!$ilAccess->checkAccessOfUser($team_member_id, 
"read",
"", $this->exc->getRefId()) &&
 
  302                                        is_array(
$info = $ilAccess->getInfo()))
 
  304                                        $this->tpl->setCurrentBlock(
'team_access_warning');
 
  305                                        $this->tpl->setVariable(
'TEAM_PARENT_ACCESS', 
$info[0][
"text"]);
 
  306                                        $this->tpl->parseCurrentBlock();
 
  309                                $this->tpl->setCurrentBlock(
"team_member");
 
  310                                $this->tpl->setVariable(
"TXT_MEMBER_NAME", $team_member_name);
 
  311                                $this->tpl->parseCurrentBlock();                                
 
  314                        if(!$has_no_team_yet)
 
  316                                $this->tpl->setCurrentBlock(
"team_log");
 
  317                                $this->tpl->setVariable(
"HREF_LOG", 
 
  318                                        $ilCtrl->getLinkTargetByClass(
"ilExSubmissionTeamGUI", 
"showTeamLog"));
 
  319                                $this->tpl->setVariable(
"TXT_LOG", 
$lng->txt(
"exc_team_log"));
 
  320                                $this->tpl->parseCurrentBlock();
 
  325                                $this->tpl->setCurrentBlock(
"team_info");
 
  326                                $this->tpl->setVariable(
"TXT_TEAM_INFO", 
$lng->txt(
"exc_no_team_yet"));
 
  334                                if($file_info[
"files"][
"count"])
 
  336                                        $this->tpl->setVariable(
"TEAM_FILES_INFO", 
"<br />".
 
  337                                                $file_info[
"files"][
"txt"].
": ".
 
  338                                                $file_info[
"files"][
"count"]);
 
  340                                $this->tpl->parseCurrentBlock();
 
  344                if(!$has_no_team_yet)
 
  346                        $this->tpl->setVariable(
"VAL_LAST_SUBMISSION", $file_info[
"last_submission"][
"value"]);
 
  347                        $this->tpl->setVariable(
"TXT_LAST_SUBMISSION", $file_info[
"last_submission"][
"txt"]);
 
  349                        $this->tpl->setVariable(
"TXT_SUBMITTED_FILES", $file_info[
"files"][
"txt"]);
 
  350                        $this->tpl->setVariable(
"VAL_SUBMITTED_FILES", $file_info[
"files"][
"count"]);
 
  352                        if($file_info[
"files"][
"download_url"])
 
  354                                $this->tpl->setCurrentBlock(
"download_link");
 
  355                                $this->tpl->setVariable(
"LINK_DOWNLOAD", $file_info[
"files"][
"download_url"]);
 
  356                                $this->tpl->setVariable(
"TXT_DOWNLOAD", $file_info[
"files"][
"download_txt"]);           
 
  357                                $this->tpl->parseCurrentBlock();
 
  360                        if($file_info[
"files"][
"download_new_url"])
 
  362                                $this->tpl->setCurrentBlock(
"download_link");
 
  363                                $this->tpl->setVariable(
"LINK_NEW_DOWNLOAD", $file_info[
"files"][
"download_new_url"]);
 
  364                                $this->tpl->setVariable(
"TXT_NEW_DOWNLOAD", $file_info[
"files"][
"download_new_txt"]);           
 
  365                                $this->tpl->parseCurrentBlock();
 
  369                        $this->tpl->setVariable(
"TXT_NOTE", 
$lng->txt(
"exc_note_for_tutor"));
 
  370                        $this->tpl->setVariable(
"NAME_NOTE",
 
  371                                "notice[$member_id]");
 
  372                        $this->tpl->setVariable(
"VAL_NOTE",
 
  378                        $lcomment_value = $member_status->getComment();
 
  380                        $overlay_id = 
"excasscomm_".$this->ass_id.
"_".$member_id;
 
  381                        $overlay_trigger_id = $overlay_id.
"_tr";
 
  383                        $overlay->setAnchor($overlay_trigger_id);
 
  384                        $overlay->setTrigger($overlay_trigger_id, 
"click", $overlay_trigger_id);
 
  387                        $this->tpl->setVariable(
"LCOMMENT_ID", $overlay_id.
"_snip");
 
  388                        $this->tpl->setVariable(
"LCOMMENT_SNIPPET", 
ilUtil::shortenText($lcomment_value, 25, 
true));
 
  389                        $this->tpl->setVariable(
"COMMENT_OVERLAY_TRIGGER_ID", $overlay_trigger_id);
 
  390                        $this->tpl->setVariable(
"COMMENT_OVERLAY_TRIGGER_TEXT", 
$lng->txt(
"exc_comment_for_learner_edit"));
 
  393                        $lcomment_form->setId($overlay_id);
 
  394                        $lcomment_form->setPreventDoubleSubmission(
false);
 
  396                        $lcomment = 
new ilTextAreaInputGUI(
$lng->txt(
"exc_comment_for_learner"), 
"lcomment_".$this->ass_id.
"_".$member_id);
 
  397                        $lcomment->setInfo(
$lng->txt(
"exc_comment_for_learner_info"));
 
  398                        $lcomment->setValue($lcomment_value);
 
  399                        $lcomment->setCols(45);
 
  400                        $lcomment->setRows(10);                 
 
  401                        $lcomment_form->addItem($lcomment);
 
  403                        $lcomment_form->addCommandButton(
"save", 
$lng->txt(
"save"));
 
  406                        $this->overlay_tpl->setCurrentBlock(
"overlay_bl");                      
 
  407                        $this->overlay_tpl->setVariable(
"COMMENT_OVERLAY_ID", $overlay_id);
 
  408                        $this->overlay_tpl->setVariable(
"COMMENT_OVERLAY_FORM", $lcomment_form->getHTML());
 
  409                        $this->overlay_tpl->parseCurrentBlock();
 
  411                        $status = $member_status->getStatus();
 
  412                        $this->tpl->setVariable(
"SEL_".strtoupper($status), 
' selected="selected" ');
 
  413                        $this->tpl->setVariable(
"TXT_NOTGRADED", 
$lng->txt(
"exc_notgraded"));
 
  414                        $this->tpl->setVariable(
"TXT_PASSED", 
$lng->txt(
"exc_passed"));
 
  415                        $this->tpl->setVariable(
"TXT_FAILED", 
$lng->txt(
"exc_failed"));
 
  416                        if (($sd = $member_status->getStatusTime()) > 0)
 
  418                                $this->tpl->setCurrentBlock(
"status_date");
 
  419                                $this->tpl->setVariable(
"TXT_LAST_CHANGE", 
$lng->txt(
"last_change"));
 
  420                                $this->tpl->setVariable(
'VAL_STATUS_DATE',
 
  422                                $this->tpl->parseCurrentBlock();
 
  424                        $pic = $member_status->getStatusIcon();
 
  426                        $this->tpl->setVariable(
"ALT_STATUS", 
$lng->txt(
"exc_".$status));
 
  429                        $this->tpl->setVariable(
"TXT_MARK", 
$lng->txt(
"exc_mark"));
 
  430                        $this->tpl->setVariable(
"NAME_MARK",
 
  432                        $mark = $member_status->getMark();
 
  436                        if (($ft = $member_status->getFeedbackTime()) > 0)
 
  438                                $this->tpl->setCurrentBlock(
"feedback_date");
 
  439                                $this->tpl->setVariable(
"TXT_FEEDBACK_MAIL_SENT",
 
  440                                        sprintf(
$lng->txt(
"exc_sent_at"),
 
  442                                $this->tpl->parseCurrentBlock();
 
  446                        $this->tpl->setVariable(
"LINK_FEEDBACK",
 
  447                                $ilCtrl->getLinkTarget($this->parent_obj, 
"redirectFeedbackMail"));
 
  448                        $this->tpl->setVariable(
"TXT_FEEDBACK",
 
  449                                $lng->txt(
"exc_send_mail"));
 
  452                        $cnt_files = $this->storage->countFeedbackFiles($submission->getFeedbackId());
 
  453                        $this->tpl->setVariable(
"LINK_FILE_FEEDBACK",
 
  454                                $ilCtrl->getLinkTargetByClass(
"ilfilesystemgui", 
"listFiles"));
 
  457                                $this->tpl->setVariable(
"TXT_FILE_FEEDBACK",
 
  458                                        $lng->txt(
"exc_add_feedback_file"));
 
  462                                $this->tpl->setVariable(
"TXT_FILE_FEEDBACK",
 
  463                                        $lng->txt(
"exc_fb_files").
" (".$cnt_files.
")");
 
  467                        if($peer_review = $submission->getPeerReview())
 
  470                                $given = $peer_review->countGivenFeedback(
true, $member_id);
 
  471                                $received = 
sizeof($peer_review->getPeerReviewsByPeerId($member_id, 
true));
 
  473                                $this->tpl->setCurrentBlock(
"peer_review_bl");
 
  475                                $this->tpl->setVariable(
"LINK_PEER_REVIEW_GIVEN", 
 
  476                                        $ilCtrl->getLinkTargetByClass(
"ilexpeerreviewgui", 
"showGivenPeerReview"));
 
  477                                $this->tpl->setVariable(
"TXT_PEER_REVIEW_GIVEN", 
 
  478                                        $lng->txt(
"exc_peer_review_given").
" (".$given.
")");    
 
  480                                $this->tpl->setVariable(
"TXT_PEER_REVIEW_RECEIVED", 
 
  481                                        $lng->txt(
"exc_peer_review_show").
" (".$received.
")");                          
 
  482                                $this->tpl->setVariable(
"LINK_PEER_REVIEW_RECEIVED", 
 
  483                                        $ilCtrl->getLinkTargetByClass(
"ilexpeerreviewgui", 
"showReceivedPeerReview"));
 
  492                                $this->tpl->parseCurrentBlock();
 
  495                        $this->tpl->parseCurrentBlock();
 
  499                        $this->tpl->touchBlock(
"member_has_no_team_bl");
 
  502                $ilCtrl->setParameter($this->parent_obj, 
"ass_id", $this->ass_id); 
 
  503                $ilCtrl->setParameter($this->parent_obj, 
"member_id", 
"");
 
  511                $this->overlay_tpl->setVariable(
"AJAX_URL", 
$url);
 
  513                return parent::render().
 
  514                        $this->overlay_tpl->get();
 
static formatDate(ilDateTime $date)
Format a date @access public.
@classDescription Date and time handling
static lookupAnyExerciseSent($a_ass_id)
Check whether exercise has been sent to any student per mail.
Exercise assignment team.
static getAssignmentTeamMap($a_ass_id)
Get team structure for assignment.
static getInstancesFromMap($a_assignment_id)
render()
render table @access public
__construct($a_parent_obj, $a_parent_cmd, $a_exc, $a_ass)
Constructor.
fillRow($member)
Fill table row.
getSelectableColumns()
Get selectable columns.
static get($a_glyph, $a_text="")
Get glyph html.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
This is a utility class for the yui overlays.
getSelectedColumns()
Get selected columns.
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.
addMultiCommand($a_cmd, $a_text)
Add Command button.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
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