53 $this->toolbar = $DIC->toolbar();
54 $this->
user = $DIC->user();
55 $ilCtrl = $DIC->ctrl();
56 $ilTabs = $DIC->tabs();
57 $lng = $DIC->language();
60 $this->exercise = $a_exercise;
61 $this->submission = $a_submission;
65 $this->ctrl = $ilCtrl;
66 $this->tabs_gui = $ilTabs;
75 $class = $ilCtrl->getNextClass($this);
76 $cmd = $ilCtrl->getCmd(
"submissionScreenTeam");
78 if (!$this->assignment->hasTeam() ||
79 !$this->submission->canView()) {
82 $this->team = $this->submission->getTeam();
84 if (!$this->submission->isTutor()) {
86 $this->tabs_gui->activateTab(
"team");
90 case 'ilrepositorysearchgui':
91 $this->ctrl->setReturn($this,
'submissionScreenTeam');
93 if (!$this->submission->isTutor()) {
96 $rep_search->setTitle($this->lng->txt(
"exc_team_member_add"));
97 $rep_search->setCallback($this,
'addTeamMemberActionObject');
98 $this->ctrl->forwardCommand($rep_search);
102 $this->{$cmd .
"Object"}();
111 $lng = $DIC->language();
112 $ilCtrl = $DIC->ctrl();
120 $team_members = $a_submission->
getTeam()->getMembers();
121 if (
sizeof($team_members)) {
123 foreach ($team_members as $member_id) {
134 $button->setCaption(
"exc_delete_team");
135 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExSubmissionTeamGUI"),
"confirmDeleteTeam"));
136 $team .=
" " . $button->render();
139 $button->setCaption(
"exc_manage_team");
140 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExSubmissionTeamGUI"),
"submissionScreenTeam"));
143 $button->setCaption(
"exc_team_log");
144 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExSubmissionTeamGUI"),
"submissionScreenTeamLog"));
146 $team .=
"<br><br>" . $button->render();
151 if (!$state->hasSubmissionEnded()) {
153 $team_info =
$lng->txt(
"exc_no_team_yet_notice");
155 $team_info =
'<span class="warning">' .
$lng->txt(
"exc_no_team_yet_notice") .
'</span>';
160 $button->setPrimary(
true);
161 $button->setCaption(
"exc_create_team");
162 $button->setUrl($ilCtrl->getLinkTargetByClass(array(
"ilExSubmissionGUI",
"ilExSubmissionTeamGUI"),
"createTeam"));
163 $team_info .=
" " . $button->render();
165 $team_info .=
'<div class="ilFormInfo">' .
$lng->txt(
"exc_no_team_yet_info") .
'</div>';
167 $team_info .=
'<div class="ilFormInfo">' .
$lng->txt(
"exc_no_team_yet_info_tutor") .
'</div>';
170 $team_info =
'<span class="warning">' .
$lng->txt(
"exc_create_team_times_up_warning") .
'</span>';
179 $this->ctrl->returnToParent($this);
186 $ilTabs = $DIC->tabs();
187 $ilCtrl = $DIC->ctrl();
188 $lng = $DIC->language();
192 $lng->txt(
"exc_team"),
193 $ilCtrl->getLinkTargetByClass(
"ilExSubmissionTeamGUI",
"submissionScreenTeam")
198 $lng->txt(
"exc_team_log"),
199 $ilCtrl->getLinkTargetByClass(
"ilExSubmissionTeamGUI",
"submissionScreenTeamLog")
205 return (($this->submission->canSubmit() &&
206 !$this->submission->getAssignment()->getTeamTutor()) ||
207 $this->submission->isTutor());
222 if ($this->submission->getAssignment()->afterDeadlineStrict(
false)) {
224 } elseif (!$read_only) {
225 $add_search = $this->submission->isTutor();
231 'auto_complete_name' => $this->lng->txt(
'user'),
232 'submit_name' => $this->lng->txt(
'add'),
233 'add_search' => $add_search,
234 'add_from_container' => $this->exercise->getRefId()
237 } elseif ($this->submission->getAssignment()->getTeamTutor()) {
243 "submissionScreenTeam",
245 $this->exercise->getRefId(),
250 $this->tpl->setContent($tbl->getHTML());
256 $this->ctrl->redirect(
"submissionScreenTeam");
259 if (!count($a_user_ids)) {
266 foreach ($a_user_ids as $user_id) {
267 if ($this->team->addTeamMember($user_id, $this->exercise->getRefId())) {
268 $new_users[] = $user_id;
271 if (!$this->exercise->members_obj->isAssigned($user_id)) {
272 $this->exercise->members_obj->assignMember($user_id);
280 if (
sizeof($new_users)) {
282 $this->exercise->processExerciseStatus(
284 $this->team->getMembers(),
285 $this->submission->hasSubmitted(),
286 $this->submission->validatePeerReviews()
289 ilUtil::sendSuccess($this->lng->txt(
"settings_saved"),
true);
292 $this->ctrl->redirect($this,
"submissionScreenTeam");
305 if (!$this->submission->isTutor()) {
307 if ((
bool) $a_full_delete) {
308 $ids = $this->team->getMembers();
309 } elseif (isset(
$_POST[
"id"]) && is_array(
$_POST[
"id"])) {
312 $ids = array_filter(array_map(
'intval', $ids));
316 $this->ctrl->redirect($this,
"submissionScreenTeam");
319 $ids = array_filter(array_map(
'intval', array(
$_GET[
"id"])));
320 if (0 === count($ids)) {
325 $members = $this->team->getMembers();
326 if (
sizeof($members) <=
sizeof($ids)) {
327 if (
sizeof($members) == 1 && $members[0] ==
$ilUser->getId()) {
332 $this->ctrl->redirect($this,
"submissionScreenTeam");
337 $cgui->setFormAction($this->ctrl->getFormAction($this));
338 $cgui->setHeaderText($this->lng->txt(
"exc_team_member_remove_sure"));
339 $cgui->setConfirm($this->lng->txt(
"remove"),
"removeTeamMember");
340 $cgui->setCancel($this->lng->txt(
"cancel"), $this->submission->isTutor()
342 :
"submissionScreenTeam");
344 $files = $this->submission->getFiles();
346 foreach ($ids as $id) {
348 foreach ($files as $file) {
349 if ($file[
"owner_id"] == $id) {
350 $details[] = $file[
"filetitle"];
354 if (
sizeof($details)) {
355 $uname .=
": " . implode(
", ", $details);
357 $cgui->addItem(
"id[]", $id, $uname);
360 $tpl->setContent($cgui->getHTML());
367 $cancel_cmd = $this->submission->isTutor()
369 :
"submissionScreenTeam";
372 if ((
bool) $a_full_delete) {
373 $ids = $this->team->getMembers();
374 } elseif (isset(
$_POST[
"id"]) && is_array(
$_POST[
"id"])) {
377 $ids = array_filter(array_map(
'intval', $ids));
381 $this->ctrl->redirect($this, $cancel_cmd);
384 $team_deleted = (bool) $a_full_delete;
385 if (!$team_deleted) {
386 $members = $this->team->getMembers();
387 if (
sizeof($members) <=
sizeof($ids)) {
388 if (
sizeof($members) == 1 && $members[0] ==
$ilUser->getId()) {
389 $team_deleted =
true;
392 $this->ctrl->redirect($this, $cancel_cmd);
397 foreach ($ids as $user_id) {
398 $this->team->removeTeamMember($user_id, $this->exercise->getRefId());
402 $this->exercise->processExerciseStatus(
408 if (!$team_deleted) {
410 $this->exercise->processExerciseStatus(
412 $this->team->getMembers(),
413 $this->submission->hasSubmitted(),
414 $this->submission->validatePeerReviews()
418 ilUtil::sendSuccess($this->lng->txt(
"settings_saved"),
true);
419 if (!$team_deleted) {
420 $this->ctrl->redirect($this, $cancel_cmd);
422 $this->ctrl->redirect($this,
"returnToParent");
428 $this->tabs_gui->activateTab(
"log");
432 "submissionScreenTeamLog",
436 $this->tpl->setContent($tbl->getHTML());
442 $this->assignment->getId(),
443 $this->submission->getUserId(),
446 ilUtil::sendSuccess($this->lng->txt(
"settings_saved"),
true);
453 $this->tpl->setContent($tbl->getHTML());
463 if ($this->submission->canSubmit()) {
465 if (
sizeof($options)) {
467 $form->setTitle(
$lng->txt(
"exc_team_assignment_adopt_user"));
468 $form->setFormAction($ilCtrl->getFormAction($this,
"createAdoptedTeam"));
473 $teams->addOption(
new ilRadioOption(
$lng->txt(
"exc_team_assignment_adopt_none_user"), -1));
477 foreach ($options as $id => $item) {
480 foreach ($item[
"user_team"] as $user_id) {
483 if (array_key_exists($user_id, $current_map)) {
484 $members[$user_id] .=
" (" .
$lng->txt(
"exc_team_assignment_adopt_already_assigned") .
")";
490 $members = implode(
"<br />", $members);
492 $option->setInfo($members);
494 $option->setDisabled(
true);
496 $teams->addOption($option);
499 $form->addItem($teams);
501 $form->addCommandButton(
"createAdoptedTeam",
$lng->txt(
"save"));
502 $form->addCommandButton(
"returnToParent",
$lng->txt(
"cancel"));
504 $tpl->setContent($form->getHTML());
511 if (!$this->exercise->members_obj->isAssigned(
$ilUser->getId())) {
512 $this->exercise->members_obj->assignMember(
$ilUser->getId());
515 ilUtil::sendSuccess($this->lng->txt(
"settings_saved"),
true);
518 $ilCtrl->redirect($this,
"returnToParent");
527 if ($this->submission->canSubmit()) {
528 $src_ass_id = (int)
$_POST[
"ass_adpt"];
529 if ($src_ass_id > 0) {
535 ilUtil::sendSuccess(
$lng->txt(
"settings_saved"),
true);
538 $ilCtrl->redirect($this,
"returnToParent");
547 if (!strlen(trim(
$_POST[
'user_login']))) {
553 $users = explode(
',',
$_POST[
'user_login']);
556 foreach ($users as
$user) {
564 $user_ids[] = $user_id;
This class represents an option in a radio group.
createSingleMemberTeamObject()
List all log entries of team.
__construct(ilObjExercise $a_exercise, ilExSubmission $a_submission)
static getAssignmentTeamMap($a_ass_id)
Get team structure for assignment.
static getTeamId($a_assignment_id, $a_user_id, $a_create_on_demand=false)
Get team id for member id.
const PRIVACY_MODE_RESPECT_USER_SETTING
static _lookupId($a_user_str)
Lookup id by login.
static adoptTeams($a_source_ass_id, $a_target_ass_id, $a_user_id=null, $a_exc_ref_id=null)
static getInstanceByIds($a_ass_id, $a_user_id=0)
Get instance by IDs (recommended for consumer code)
static getAdoptableTeamAssignments($a_exercise_id, $a_exclude_ass_id=null, $a_user_id=null)
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
submissionScreenTeamLogObject()
submissionScreenTeamObject()
Displays a form which allows members to manage team uploads.
List all team members of an assignment.
getLastSubmission()
TODO -> get rid of getTableUserWhere and move to repository class Get the date of the last submission...
static getNamePresentation( $a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
addUserFromAutoCompleteObject()
Add user as member.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
removeTeamMemberObject($a_full_delete=false)
confirmDeleteTeamObject()
addProperty($a_name, $a_value, $a_link="")
add a property to current section
static getOverviewContent(ilInfoScreenGUI $a_info, ilExSubmission $a_submission)
confirmRemoveTeamMemberObject($a_full_delete=false)
Exercise submission //TODO: This class has to much static methods related to delivered "files"...
static fillAutoCompleteToolbar($parent_object, ilToolbarGUI $toolbar=null, $a_options=array(), $a_sticky=false)
fill toolbar with
addTeamMemberActionObject($a_user_ids=array())
createAdoptedTeamObject()
Confirmation screen class.