ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
ilExAssignmentEditorGUI Class Reference

Class ilExAssignmentEditorGUI. More...

+ Collaboration diagram for ilExAssignmentEditorGUI:

Public Member Functions

 __construct ($a_exercise_id, $a_enable_peer_review_completion_settings, ilExAssignment $a_ass=null)
 Constructor. More...
 
 executeCommand ()
 
 listAssignmentsObject ()
 List assignments. More...
 
 addAssignmentObject ()
 Create assignment. More...
 
 saveAssignmentObject ()
 Save assignment. More...
 
 editAssignmentObject ()
 Edit assignment. More...
 
 getAssignmentValues (ilPropertyFormGUI $a_form)
 Get current values for assignment from. More...
 
 updateAssignmentObject ()
 Update assignment. More...
 
 confirmAssignmentsDeletionObject ()
 Confirm assignments deletion. More...
 
 deleteAssignmentsObject ()
 Delete assignments. More...
 
 saveAssignmentOrderObject ()
 Save assignments order. More...
 
 orderAssignmentsByDeadlineObject ()
 Order by deadline. More...
 
 setAssignmentHeader ()
 Set assignment header. More...
 
 downloadGlobalFeedbackFileObject ()
 
 editPeerReviewObject (ilPropertyFormGUI $a_form=null)
 
 adoptTeamAssignmentsFormObject ()
 
 adoptTeamAssignmentsObject ()
 

Protected Member Functions

 getTypeDropdown ()
 Get type selection dropdown. More...
 
 initAssignmentForm ($a_type, $a_mode="create")
 Init assignment form. More...
 
 processForm (ilPropertyFormGUI $a_form)
 Custom form validation. More...
 
 importFormToAssignment (ilExAssignment $a_ass, array $a_input)
 Import form values to assignment. More...
 
 setDisabledFieldValues (ilPropertyFormGUI $a_form)
 
 handleDisabledFields (ilPropertyFormGUI $a_form, $a_force_set_values=false)
 
 initPeerReviewForm ()
 
 getPeerReviewValues ($a_form)
 
 setDisabledPeerReviewFieldValues (ilPropertyFormGUI $a_form)
 
 handleDisabledPeerFields (ilPropertyFormGUI $a_form, $a_force_set_values=false)
 
 processPeerReviewForm (ilPropertyFormGUI $a_form)
 
 importPeerReviewFormToAssignment (ilExAssignment $a_ass, array $a_input)
 
 updatePeerReviewObject ()
 

Protected Attributes

 $ctrl
 
 $tabs
 
 $lng
 
 $tpl
 
 $toolbar
 
 $settings
 
 $help
 
 $exercise_id
 
 $assignment
 
 $enable_peer_review_completion
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilExAssignmentEditorGUI::__construct (   $a_exercise_id,
  $a_enable_peer_review_completion_settings,
ilExAssignment  $a_ass = null 
)

Constructor.

Parameters
int$a_exercise_id
bool$a_enable_peer_review_completion_settings
ilExAssignment$a_ass
Returns
object

Definition at line 65 of file class.ilExAssignmentEditorGUI.php.

66 {
67 global $DIC;
68
69 $this->ctrl = $DIC->ctrl();
70 $this->tabs = $DIC->tabs();
71 $this->lng = $DIC->language();
72 $this->tpl = $DIC["tpl"];
73 $this->toolbar = $DIC->toolbar();
74 $this->settings = $DIC->settings();
75 $this->help = $DIC["ilHelp"];
76 $this->exercise_id = $a_exercise_id;
77 $this->assignment = $a_ass;
78 $this->enable_peer_review_completion = (bool) $a_enable_peer_review_completion_settings;
79 }
global $DIC
Definition: saml.php:7
settings()
Definition: settings.php:2

References $DIC, and settings().

+ Here is the call graph for this function:

Member Function Documentation

◆ addAssignmentObject()

ilExAssignmentEditorGUI::addAssignmentObject ( )

Create assignment.

Definition at line 161 of file class.ilExAssignmentEditorGUI.php.

162 {
165
166 // #16163 - ignore ass id from request
167 $this->assignment = null;
168
169 if (!(int) $_POST["type"]) {
170 $ilCtrl->redirect($this, "listAssignments");
171 }
172
173 $form = $this->initAssignmentForm((int) $_POST["type"], "create");
174 $tpl->setContent($form->getHTML());
175 }
$_POST["username"]
initAssignmentForm($a_type, $a_mode="create")
Init assignment form.
global $ilCtrl
Definition: ilias.php:18
if(isset($_POST['submit'])) $form

References $_POST, $ctrl, $form, $ilCtrl, $tpl, and initAssignmentForm().

+ Here is the call graph for this function:

◆ adoptTeamAssignmentsFormObject()

ilExAssignmentEditorGUI::adoptTeamAssignmentsFormObject ( )

Definition at line 1321 of file class.ilExAssignmentEditorGUI.php.

1322 {
1324 $ilTabs = $this->tabs;
1325 $lng = $this->lng;
1326 $tpl = $this->tpl;
1327
1328 if (!$this->assignment) {
1329 $ilCtrl->redirect($this, "listAssignments");
1330 }
1331
1332 $ilTabs->clearTargets();
1333 $ilTabs->setBackTarget(
1334 $lng->txt("back"),
1335 $ilCtrl->getLinkTarget($this, "listAssignments")
1336 );
1337
1338 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1339 $form = new ilPropertyFormGUI();
1340 $form->setTitle($lng->txt("exc_team_assignment_adopt"));
1341 $form->setFormAction($ilCtrl->getFormAction($this, "adoptTeamAssignments"));
1342
1343 include_once "Modules/Exercise/classes/class.ilExAssignmentTeam.php";
1344 $options = ilExAssignmentTeam::getAdoptableTeamAssignments($this->assignment->getExerciseId());
1345
1346 // we must not have existing teams in assignment
1347 if (array_key_exists($this->assignment->getId(), $options)) {
1348 $ilCtrl->redirect($this, "listAssignments");
1349 }
1350
1351 $teams = new ilRadioGroupInputGUI($lng->txt("exc_assignment"), "ass_adpt");
1352 $teams->setValue(-1);
1353
1354 $teams->addOption(new ilRadioOption($lng->txt("exc_team_assignment_adopt_none"), -1));
1355
1356 foreach ($options as $id => $item) {
1357 $option = new ilRadioOption($item["title"], $id);
1358 $option->setInfo($lng->txt("exc_team_assignment_adopt_teams") . ": " . $item["teams"]);
1359 $teams->addOption($option);
1360 }
1361
1362 $form->addItem($teams);
1363
1364 $form->addCommandButton("adoptTeamAssignments", $lng->txt("save"));
1365 $form->addCommandButton("listAssignments", $lng->txt("cancel"));
1366
1367 $tpl->setContent($form->getHTML());
1368 }
if(!isset( $_REQUEST[ 'ReturnTo'])) if(!isset($_REQUEST['AuthId'])) $options
Definition: as_login.php:20
static getAdoptableTeamAssignments($a_exercise_id, $a_exclude_ass_id=null, $a_user_id=null)
This class represents a property form user interface.
This class represents a property in a property form.
This class represents an option in a radio group.
if(!array_key_exists('StateId', $_REQUEST)) $id

References $ctrl, $form, $id, $ilCtrl, $lng, $options, $tabs, $tpl, and ilExAssignmentTeam\getAdoptableTeamAssignments().

+ Here is the call graph for this function:

◆ adoptTeamAssignmentsObject()

ilExAssignmentEditorGUI::adoptTeamAssignmentsObject ( )

Definition at line 1370 of file class.ilExAssignmentEditorGUI.php.

1371 {
1373 $lng = $this->lng;
1374
1375 $src_ass_id = (int) $_POST["ass_adpt"];
1376
1377 if ($this->assignment &&
1378 $src_ass_id > 0) {
1379 include_once "Modules/Exercise/classes/class.ilExAssignmentTeam.php";
1380 ilExAssignmentTeam::adoptTeams($src_ass_id, $this->assignment->getId());
1381
1382 ilUtil::sendSuccess($lng->txt("settings_saved"), true);
1383 }
1384
1385 $ilCtrl->redirect($this, "listAssignments");
1386 }
static adoptTeams($a_source_ass_id, $a_target_ass_id, $a_user_id=null, $a_exc_ref_id=null)
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.

References $_POST, $ctrl, $ilCtrl, $lng, ilExAssignmentTeam\adoptTeams(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ confirmAssignmentsDeletionObject()

ilExAssignmentEditorGUI::confirmAssignmentsDeletionObject ( )

Confirm assignments deletion.

Definition at line 852 of file class.ilExAssignmentEditorGUI.php.

853 {
857
858 if (!is_array($_POST["id"]) || count($_POST["id"]) == 0) {
859 ilUtil::sendFailure($lng->txt("no_checkbox"), true);
860 $ilCtrl->redirect($this, "listAssignments");
861 } else {
862 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
863 $cgui = new ilConfirmationGUI();
864 $cgui->setFormAction($ilCtrl->getFormAction($this));
865 $cgui->setHeaderText($lng->txt("exc_conf_del_assignments"));
866 $cgui->setCancel($lng->txt("cancel"), "listAssignments");
867 $cgui->setConfirm($lng->txt("delete"), "deleteAssignments");
868
869 foreach ($_POST["id"] as $i) {
870 $cgui->addItem("id[]", $i, ilExAssignment::lookupTitle($i));
871 }
872
873 $tpl->setContent($cgui->getHTML());
874 }
875 }
Confirmation screen class.
static lookupTitle($a_id)
Lookup title.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
$i
Definition: disco.tpl.php:19

References $_POST, $ctrl, $i, $ilCtrl, $lng, $tpl, ilExAssignment\lookupTitle(), and ilUtil\sendFailure().

+ Here is the call graph for this function:

◆ deleteAssignmentsObject()

ilExAssignmentEditorGUI::deleteAssignmentsObject ( )

Delete assignments.

Definition at line 880 of file class.ilExAssignmentEditorGUI.php.

881 {
884
885 $delete = false;
886 if (is_array($_POST["id"])) {
887 foreach ($_POST["id"] as $id) {
889 $ass->delete();
890 $delete = true;
891 }
892 }
893
894 if ($delete) {
895 ilUtil::sendSuccess($lng->txt("exc_assignments_deleted"), true);
896 }
897 $ilCtrl->setParameter($this, "ass_id", "");
898 $ilCtrl->redirect($this, "listAssignments");
899 }
Exercise assignment.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled

References $_POST, $ctrl, $id, $ilCtrl, $lng, ilUtil\sendSuccess(), and ilUtil\stripSlashes().

+ Here is the call graph for this function:

◆ downloadGlobalFeedbackFileObject()

ilExAssignmentEditorGUI::downloadGlobalFeedbackFileObject ( )

Definition at line 973 of file class.ilExAssignmentEditorGUI.php.

974 {
976
977 if (!$this->assignment ||
978 !$this->assignment->getFeedbackFile()) {
979 $ilCtrl->redirect($this, "returnToParent");
980 }
981
982 ilUtil::deliverFile($this->assignment->getGlobalFeedbackFilePath(), $this->assignment->getFeedbackFile());
983 }
static deliverFile( $a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.

References $ctrl, $ilCtrl, and ilUtil\deliverFile().

+ Here is the call graph for this function:

◆ editAssignmentObject()

ilExAssignmentEditorGUI::editAssignmentObject ( )

Edit assignment.

Definition at line 685 of file class.ilExAssignmentEditorGUI.php.

686 {
688 $ilTabs = $this->tabs;
690
691 $this->setAssignmentHeader();
692 $ilTabs->activateTab("ass_settings");
693
694 $form = $this->initAssignmentForm($this->assignment->getType(), "edit");
696 $tpl->setContent($form->getHTML());
697 }
setAssignmentHeader()
Set assignment header.
getAssignmentValues(ilPropertyFormGUI $a_form)
Get current values for assignment from.

References $form, $tabs, $tpl, getAssignmentValues(), initAssignmentForm(), and setAssignmentHeader().

+ Here is the call graph for this function:

◆ editPeerReviewObject()

ilExAssignmentEditorGUI::editPeerReviewObject ( ilPropertyFormGUI  $a_form = null)

Definition at line 1100 of file class.ilExAssignmentEditorGUI.php.

1101 {
1102 $tpl = $this->tpl;
1103 $ilTabs = $this->tabs;
1104 $tpl = $this->tpl;
1105
1106 $this->setAssignmentHeader();
1107 $ilTabs->activateTab("peer_settings");
1108
1109 if ($a_form === null) {
1110 $a_form = $this->initPeerReviewForm();
1111 $this->getPeerReviewValues($a_form);
1112 }
1113 $tpl->setContent($a_form->getHTML());
1114 }

References $tabs, $tpl, getPeerReviewValues(), initPeerReviewForm(), and setAssignmentHeader().

+ Here is the call graph for this function:

◆ executeCommand()

ilExAssignmentEditorGUI::executeCommand ( )

Definition at line 81 of file class.ilExAssignmentEditorGUI.php.

82 {
84 $ilTabs = $this->tabs;
86
87 $class = $ilCtrl->getNextClass($this);
88 $cmd = $ilCtrl->getCmd("listAssignments");
89
90 switch ($class) {
91 case "ilpropertyformgui":
93 $ilCtrl->forwardCommand($form);
94 break;
95
96 // instruction files
97 case "ilexassignmentfilesystemgui":
98 $this->setAssignmentHeader();
99 $ilTabs->activateTab("ass_files");
100
101 include_once("./Modules/Exercise/classes/class.ilFSWebStorageExercise.php");
102 $fstorage = new ilFSWebStorageExercise($this->exercise_id, $this->assignment->getId());
103 $fstorage->create();
104
105 include_once("./Modules/Exercise/classes/class.ilExAssignmentFileSystemGUI.php");
106 $fs_gui = new ilExAssignmentFileSystemGUI($fstorage->getPath());
107 $fs_gui->setTitle($lng->txt("exc_instruction_files"));
108 $fs_gui->setTableId("excassfil" . $this->assignment->getId());
109 $fs_gui->setAllowDirectories(false);
110 $ilCtrl->forwardCommand($fs_gui);
111 break;
112
113 case "ilexpeerreviewgui":
114 $ilTabs->clearTargets();
115 $ilTabs->setBackTarget(
116 $lng->txt("back"),
117 $ilCtrl->getLinkTarget($this, "listAssignments")
118 );
119
120 include_once("./Modules/Exercise/classes/class.ilExPeerReviewGUI.php");
121 $peer_gui = new ilExPeerReviewGUI($this->assignment);
122 $ilCtrl->forwardCommand($peer_gui);
123 break;
124
125 default:
126 $this->{$cmd . "Object"}();
127 break;
128 }
129 }
Class ilExPeerReviewGUI.

References $ctrl, $form, $ilCtrl, $lng, $tabs, initAssignmentForm(), setAssignmentHeader(), and ilExAssignment\TYPE_PORTFOLIO.

+ Here is the call graph for this function:

◆ getAssignmentValues()

ilExAssignmentEditorGUI::getAssignmentValues ( ilPropertyFormGUI  $a_form)

Get current values for assignment from.

Definition at line 702 of file class.ilExAssignmentEditorGUI.php.

703 {
706
707 $values = array();
708 $values["type"] = $this->assignment->getType();
709 $values["title"] = $this->assignment->getTitle();
710 $values["mandatory"] = $this->assignment->getMandatory();
711 $values["instruction"] = $this->assignment->getInstruction();
712 $values['template_id'] = $this->assignment->getPortfolioTemplateId();
713
714 if ($this->assignment->getPortfolioTemplateId()) {
715 $values["template"] = 1;
716 }
717
718 if ($this->assignment->getMinCharLimit()) {
719 $values['limit_characters'] = 1;
720 $values['min_char_limit'] = $this->assignment->getMinCharLimit();
721 }
722 if ($this->assignment->getMaxCharLimit()) {
723 $values['limit_characters'] = 1;
724 $values['max_char_limit'] = $this->assignment->getMaxCharLimit();
725 }
726
727 if ($this->assignment->getStartTime()) {
728 $values["start_time"] = new ilDateTime($this->assignment->getStartTime(), IL_CAL_UNIX);
729 }
730
731 if ($this->assignment->getType() == ilExAssignment::TYPE_UPLOAD ||
732 $this->assignment->getType() == ilExAssignment::TYPE_UPLOAD_TEAM) {
733 if ($this->assignment->getMaxFile()) {
734 $values["max_file_tgl"] = true;
735 $values["max_file"] = $this->assignment->getMaxFile();
736 }
737 }
738
739 if ($this->assignment->getType() == ilExAssignment::TYPE_UPLOAD_TEAM) {
740 $values["team_tutor"] = $this->assignment->getTeamTutor();
741 }
742
743 $a_form->setValuesByArray($values);
744
745 // global feedback
746 if ($this->assignment->getFeedbackFile()) {
747 $a_form->getItemByPostVar("fb")->setChecked(true);
748 $a_form->getItemByPostVar("fb_file")->setValue(basename($this->assignment->getGlobalFeedbackFilePath()));
749 $a_form->getItemByPostVar("fb_file")->setRequired(false); // #15467
750 $a_form->getItemByPostVar("fb_file")->setInfo(
751 // #16400
752 '<a href="' . $ilCtrl->getLinkTarget($this, "downloadGlobalFeedbackFile") . '">' .
753 $lng->txt("download") . '</a>'
754 );
755 }
756 $a_form->getItemByPostVar("fb_cron")->setChecked($this->assignment->hasFeedbackCron());
757 $a_form->getItemByPostVar("fb_date")->setValue($this->assignment->getFeedbackDate());
758
759 $this->handleDisabledFields($a_form, true);
760 }
const IL_CAL_UNIX
@classDescription Date and time handling
handleDisabledFields(ilPropertyFormGUI $a_form, $a_force_set_values=false)
setValuesByArray($a_values, $a_restrict_to_value_keys=false)
Set form values from an array.
getItemByPostVar($a_post_var)
Get Item by POST variable.

References $ctrl, $ilCtrl, $lng, ilPropertyFormGUI\getItemByPostVar(), handleDisabledFields(), IL_CAL_UNIX, ilPropertyFormGUI\setValuesByArray(), ilExAssignment\TYPE_UPLOAD, and ilExAssignment\TYPE_UPLOAD_TEAM.

Referenced by editAssignmentObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPeerReviewValues()

ilExAssignmentEditorGUI::getPeerReviewValues (   $a_form)
protected

Definition at line 1116 of file class.ilExAssignmentEditorGUI.php.

1117 {
1118 $values = array();
1119
1120 if ($this->assignment->getPeerReviewDeadline() > 0) {
1121 $values["peer_dl"] = new ilDateTime($this->assignment->getPeerReviewDeadline(), IL_CAL_UNIX);
1122 }
1123
1124 $a_form->setValuesByArray($values);
1125
1126 $this->handleDisabledPeerFields($a_form, true);
1127 }
handleDisabledPeerFields(ilPropertyFormGUI $a_form, $a_force_set_values=false)

References handleDisabledPeerFields(), and IL_CAL_UNIX.

Referenced by editPeerReviewObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getTypeDropdown()

ilExAssignmentEditorGUI::getTypeDropdown ( )
protected

Get type selection dropdown.

Returns
ilSelectInputGUI

Definition at line 182 of file class.ilExAssignmentEditorGUI.php.

183 {
186
187 $types = array(
188 ilExAssignment::TYPE_UPLOAD => $lng->txt("exc_type_upload"),
189 ilExAssignment::TYPE_UPLOAD_TEAM => $lng->txt("exc_type_upload_team"),
190 ilExAssignment::TYPE_TEXT => $lng->txt("exc_type_text")
191 );
192 if (!$ilSetting->get('disable_wsp_blogs')) {
193 $types[ilExAssignment::TYPE_BLOG] = $lng->txt("exc_type_blog");
194 }
195 if ($ilSetting->get('user_portfolios')) {
196 $types[ilExAssignment::TYPE_PORTFOLIO] = $lng->txt("exc_type_portfolio");
197 }
198 $ty = new ilSelectInputGUI($lng->txt("exc_assignment_type"), "type");
199 $ty->setOptions($types);
200 $ty->setRequired(true);
201 return $ty;
202 }
This class represents a selection list property in a property form.
global $ilSetting
Definition: privfeed.php:17

References $ilSetting, $lng, $settings, ilExAssignment\TYPE_BLOG, ilExAssignment\TYPE_PORTFOLIO, ilExAssignment\TYPE_TEXT, ilExAssignment\TYPE_UPLOAD, and ilExAssignment\TYPE_UPLOAD_TEAM.

Referenced by initAssignmentForm(), and listAssignmentsObject().

+ Here is the caller graph for this function:

◆ handleDisabledFields()

ilExAssignmentEditorGUI::handleDisabledFields ( ilPropertyFormGUI  $a_form,
  $a_force_set_values = false 
)
protected

Definition at line 782 of file class.ilExAssignmentEditorGUI.php.

783 {
784 // potentially disabled elements are initialized here to re-use this
785 // method after setValuesByPost() - see updateAssignmentObject()
786
787 // team assignments do not support peer review
788 // with no active peer review there is nothing to protect
789 if ($this->assignment->getType() != ilExAssignment::TYPE_UPLOAD_TEAM &&
790 $this->assignment->getPeerReview()) {
791 // #14450
792 include_once "Modules/Exercise/classes/class.ilExPeerReview.php";
793 $peer_review = new ilExPeerReview($this->assignment);
794 if ($peer_review->hasPeerReviewGroups()) {
795 // deadline(s) are past and must not change
796 $a_form->getItemByPostVar("deadline")->setDisabled(true);
797 $a_form->getItemByPostVar("deadline2")->setDisabled(true);
798
799 $a_form->getItemByPostVar("peer")->setDisabled(true);
800 }
801 }
802
803 if ($a_force_set_values ||
804 ($peer_review && $peer_review->hasPeerReviewGroups())) {
805 $this->setDisabledFieldValues($a_form);
806 }
807 }
setDisabledFieldValues(ilPropertyFormGUI $a_form)
Exercise peer review.

References ilPropertyFormGUI\getItemByPostVar(), setDisabledFieldValues(), and ilExAssignment\TYPE_UPLOAD_TEAM.

Referenced by getAssignmentValues(), and updateAssignmentObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleDisabledPeerFields()

ilExAssignmentEditorGUI::handleDisabledPeerFields ( ilPropertyFormGUI  $a_form,
  $a_force_set_values = false 
)
protected

Definition at line 1154 of file class.ilExAssignmentEditorGUI.php.

1155 {
1156 // #14450
1157 include_once "Modules/Exercise/classes/class.ilExPeerReview.php";
1158 $peer_review = new ilExPeerReview($this->assignment);
1159 if ($peer_review->hasPeerReviewGroups()) {
1160 // JourFixe, 2015-05-11 - editable again
1161 // $a_form->getItemByPostVar("peer_dl")->setDisabled(true);
1162
1163 $a_form->getItemByPostVar("peer_min")->setDisabled(true);
1164 $a_form->getItemByPostVar("peer_prsl")->setDisabled(true);
1165 $a_form->getItemByPostVar("peer_unlock")->setDisabled(true);
1166
1167 if ($this->enable_peer_review_completion) {
1168 $a_form->getItemByPostVar("peer_valid")->setDisabled(true);
1169 }
1170
1171 $a_form->getItemByPostVar("crit_cat")->setDisabled(true);
1172 $a_form->getItemByPostVar("peer_text")->setDisabled(true);
1173 $a_form->getItemByPostVar("peer_char")->setDisabled(true);
1174 $a_form->getItemByPostVar("peer_rating")->setDisabled(true);
1175 $a_form->getItemByPostVar("peer_file")->setDisabled(true);
1176
1177 // required number input is a problem
1178 $min = new ilHiddenInputGUI("peer_min");
1179 $min->setValue($this->assignment->getPeerReviewMin());
1180 $a_form->addItem($min);
1181 }
1182
1183 if ($a_force_set_values ||
1184 $peer_review->hasPeerReviewGroups()) {
1185 $this->setDisabledPeerReviewFieldValues($a_form);
1186 }
1187 }
setDisabledPeerReviewFieldValues(ilPropertyFormGUI $a_form)
This class represents a hidden form property in a property form.
addItem($a_item)
Add Item (Property, SectionHeader).

References ilPropertyFormGUI\addItem(), ilPropertyFormGUI\getItemByPostVar(), and setDisabledPeerReviewFieldValues().

Referenced by getPeerReviewValues(), and updatePeerReviewObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ importFormToAssignment()

ilExAssignmentEditorGUI::importFormToAssignment ( ilExAssignment  $a_ass,
array  $a_input 
)
protected

Import form values to assignment.

Parameters
ilExAssignment$a_ass
array$a_input

Definition at line 576 of file class.ilExAssignmentEditorGUI.php.

577 {
578 $is_create = !(bool) $a_ass->getId();
579
580 $a_ass->setTitle($a_input["title"]);
581 $a_ass->setInstruction($a_input["instruction"]);
582 $a_ass->setMandatory($a_input["mandatory"]);
583
584 $a_ass->setStartTime($a_input["start"]);
585 $a_ass->setDeadline($a_input["deadline"]);
586 $a_ass->setExtendedDeadline($a_input["deadline_ext"]);
587
588 $a_ass->setMaxFile($a_input["max_file"]);
589 $a_ass->setTeamTutor($a_input["team_tutor"]);
590
591 $a_ass->setPortfolioTemplateId($a_input['template_id']);
592
593 $a_ass->setMinCharLimit($a_input['min_char_limit']);
594 $a_ass->setMaxCharLimit($a_input['max_char_limit']);
595
596 $a_ass->setPeerReview((bool) $a_input["peer"]);
597
598 // peer review default values (on separate form)
599 if ($is_create) {
600 $a_ass->setPeerReviewMin(2);
601 $a_ass->setPeerReviewSimpleUnlock(false);
603 $a_ass->setPeerReviewPersonalized(false);
604 $a_ass->setPeerReviewFileUpload(false);
605 $a_ass->setPeerReviewText(true);
606 $a_ass->setPeerReviewRating(true);
607 }
608
609 if ($a_input["fb"]) {
610 $a_ass->setFeedbackCron($a_input["fb_cron"]); // #13380
611 $a_ass->setFeedbackDate($a_input["fb_date"]);
612 }
613
614 // id needed for file handling
615 if ($is_create) {
616 $a_ass->save();
617
618 // #15994 - assignment files
619 if (is_array($a_input["files"])) {
620 $a_ass->uploadAssignmentFiles($a_input["files"]);
621 }
622 } else {
623 // remove global feedback file?
624 if (!$a_input["fb"]) {
625 $a_ass->deleteGlobalFeedbackFile();
626 $a_ass->setFeedbackFile(null);
627 }
628
629 $a_ass->update();
630 }
631
632 // add global feedback file?
633 if ($a_input["fb"]) {
634 if (is_array($a_input["fb_file"])) {
635 $a_ass->handleGlobalFeedbackFileUpload($a_input["fb_file"]);
636 $a_ass->update();
637 }
638 }
639 }
setDeadline($a_val)
Set deadline (timestamp)
setPeerReviewRating($a_val)
Set peer review rating.
setPeerReview($a_value)
Toggle peer review.
setPortfolioTemplateId($a_val)
Set portfolio template id.
setTeamTutor($a_value)
Set team management by tutor.
setFeedbackCron($a_value)
Toggle (global) feedback file cron.
setTitle($a_val)
Set title.
getId()
Get assignment id.
setPeerReviewPersonalized($a_val)
Set peer review personalized.
setPeerReviewValid($a_value)
Set peer review validation.
handleGlobalFeedbackFileUpload(array $a_file)
setPeerReviewText($a_val)
Set peer review text.
setPeerReviewSimpleUnlock($a_value)
Set peer review simple unlock.
setExtendedDeadline($a_val)
Set extended deadline (timestamp)
setPeerReviewMin($a_value)
Set peer review minimum.
setInstruction($a_val)
Set instruction.
uploadAssignmentFiles($a_files)
Upload assignment files (from creation form)
setMaxCharLimit($a_val)
Set limit maximum characters.
setMaxFile($a_value)
Set max number of uploads.
setStartTime($a_val)
Set start time (timestamp)
setMinCharLimit($a_val)
Set limit minimum characters.
setFeedbackDate($a_value)
Set (global) feedback file availability date.
setPeerReviewFileUpload($a_val)
Set peer review file upload.
save()
Save assignment.
setFeedbackFile($a_value)
Set (global) feedback file.
setMandatory($a_val)
Set mandatory.

References ilExAssignment\deleteGlobalFeedbackFile(), ilExAssignment\getId(), ilExAssignment\handleGlobalFeedbackFileUpload(), ilExAssignment\PEER_REVIEW_VALID_NONE, ilExAssignment\save(), ilExAssignment\setDeadline(), ilExAssignment\setExtendedDeadline(), ilExAssignment\setFeedbackCron(), ilExAssignment\setFeedbackDate(), ilExAssignment\setFeedbackFile(), ilExAssignment\setInstruction(), ilExAssignment\setMandatory(), ilExAssignment\setMaxCharLimit(), ilExAssignment\setMaxFile(), ilExAssignment\setMinCharLimit(), ilExAssignment\setPeerReview(), ilExAssignment\setPeerReviewFileUpload(), ilExAssignment\setPeerReviewMin(), ilExAssignment\setPeerReviewPersonalized(), ilExAssignment\setPeerReviewRating(), ilExAssignment\setPeerReviewSimpleUnlock(), ilExAssignment\setPeerReviewText(), ilExAssignment\setPeerReviewValid(), ilExAssignment\setPortfolioTemplateId(), ilExAssignment\setStartTime(), ilExAssignment\setTeamTutor(), ilExAssignment\setTitle(), ilExAssignment\update(), and ilExAssignment\uploadAssignmentFiles().

Referenced by saveAssignmentObject(), and updateAssignmentObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ importPeerReviewFormToAssignment()

ilExAssignmentEditorGUI::importPeerReviewFormToAssignment ( ilExAssignment  $a_ass,
array  $a_input 
)
protected

Definition at line 1269 of file class.ilExAssignmentEditorGUI.php.

1270 {
1271 $a_ass->setPeerReviewMin($a_input["peer_min"]);
1272 $a_ass->setPeerReviewDeadline($a_input["peer_dl"]);
1273 $a_ass->setPeerReviewSimpleUnlock($a_input["peer_unlock"]);
1274 $a_ass->setPeerReviewPersonalized($a_input["peer_prsl"]);
1275
1276 // #18964
1277 $a_ass->setPeerReviewValid($a_input["peer_valid"]
1278 ? $a_input["peer_valid"]
1280
1281 $a_ass->setPeerReviewFileUpload($a_input["peer_file"]);
1282 $a_ass->setPeerReviewChars($a_input["peer_char"]);
1283 $a_ass->setPeerReviewText($a_input["peer_text"]);
1284 $a_ass->setPeerReviewRating($a_input["peer_rating"]);
1285 $a_ass->setPeerReviewCriteriaCatalogue($a_input["crit_cat"] > 0
1286 ? $a_input["crit_cat"]
1287 : null);
1288
1289 $a_ass->update();
1290 }
setPeerReviewChars($a_value)
Set peer review minimum characters.
setPeerReviewCriteriaCatalogue($a_value)
Set peer review criteria catalogue id.
setPeerReviewDeadline($a_val)
Set peer review deadline (timestamp)

References ilExAssignment\PEER_REVIEW_VALID_NONE, ilExAssignment\setPeerReviewChars(), ilExAssignment\setPeerReviewCriteriaCatalogue(), ilExAssignment\setPeerReviewDeadline(), ilExAssignment\setPeerReviewFileUpload(), ilExAssignment\setPeerReviewMin(), ilExAssignment\setPeerReviewPersonalized(), ilExAssignment\setPeerReviewRating(), ilExAssignment\setPeerReviewSimpleUnlock(), ilExAssignment\setPeerReviewText(), ilExAssignment\setPeerReviewValid(), and ilExAssignment\update().

Referenced by updatePeerReviewObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initAssignmentForm()

ilExAssignmentEditorGUI::initAssignmentForm (   $a_type,
  $a_mode = "create" 
)
protected

Init assignment form.

Parameters
int$a_type
int$a_mode"create"/"edit"

Definition at line 210 of file class.ilExAssignmentEditorGUI.php.

211 {
214
215 $lng->loadLanguageModule("form");
216 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
217 $form = new ilPropertyFormGUI();
218 $form->setTableWidth("600px");
219 if ($a_mode == "edit") {
220 $form->setTitle($lng->txt("exc_edit_assignment"));
221 } else {
222 $form->setTitle($lng->txt("exc_new_assignment"));
223 }
224 $form->setFormAction($ilCtrl->getFormAction($this));
225
226 // title
227 $ti = new ilTextInputGUI($lng->txt("title"), "title");
228 $ti->setMaxLength(200);
229 $ti->setRequired(true);
230 $form->addItem($ti);
231
232 // type
233 $ty = $this->getTypeDropdown();
234 $ty->setValue($a_type);
235 $ty->setDisabled(true);
236 $form->addItem($ty);
237
239 $rb_limit_chars = new ilCheckboxInputGUI($lng->txt("exc_limit_characters"), "limit_characters");
240
241 $min_char_limit = new ilNumberInputGUI($lng->txt("exc_min_char_limit"), "min_char_limit");
242 $min_char_limit->allowDecimals(false);
243 $min_char_limit->setMinValue(0);
244 $min_char_limit->setSize(3);
245
246 $max_char_limit = new ilNumberInputGUI($lng->txt("exc_max_char_limit"), "max_char_limit");
247 $max_char_limit->allowDecimals(false);
248 $max_char_limit->setMinValue((int) $_POST['min_char_limit'] + 1);
249
250 $max_char_limit->setSize(3);
251
252 $rb_limit_chars->addSubItem($min_char_limit);
253 $rb_limit_chars->addSubItem($max_char_limit);
254
255 $form->addItem($rb_limit_chars);
256 }
257
258 // portfolio template
260 $rd_template = new ilRadioGroupInputGUI($lng->txt("exc_template"), "template");
261 $rd_template->setRequired(true);
262 $radio_no_template = new ilRadioOption($lng->txt("exc_without_template"), 0, $lng->txt("exc_without_template_info", "without_template_info"));
263 $radio_with_template = new ilRadioOption($lng->txt("exc_with_template"), 1, $lng->txt("exc_with_template_info", "with_template_info"));
264
265 include_once "Services/Form/classes/class.ilRepositorySelector2InputGUI.php";
266 $repo = new ilRepositorySelector2InputGUI($lng->txt("exc_portfolio_template"), "template_id");
267 $repo->setRequired(true);
268 if ($this->assignment) {
269 $repo->setValue($this->assignment->getPortfolioTemplateId());
270 }
271 $repo->getExplorerGUI()->setSelectableTypes(array("prtt"));
272 $repo->getExplorerGUI()->setTypeWhiteList(array("root", "prtt", "cat", "crs", "grp"));
273 $radio_with_template->addSubItem($repo);
274
275 $rd_template->addOption($radio_no_template);
276 $rd_template->addOption($radio_with_template);
277 $form->addItem($rd_template);
278 }
279
280 // mandatory
281 $cb = new ilCheckboxInputGUI($lng->txt("exc_mandatory"), "mandatory");
282 $cb->setInfo($lng->txt("exc_mandatory_info"));
283 $cb->setChecked(true);
284 $form->addItem($cb);
285
286 // Work Instructions
287 $sub_header = new ilFormSectionHeaderGUI();
288 $sub_header->setTitle($lng->txt("exc_work_instructions"), "work_instructions");
289 $form->addItem($sub_header);
290
291 $desc_input = new ilTextAreaInputGUI($lng->txt("exc_instruction"), "instruction");
292 $desc_input->setRows(20);
293 $desc_input->setUseRte(true);
294 $desc_input->setRteTagSet("mini");
295 $form->addItem($desc_input);
296
297 // files
298 if ($a_mode == "create") {
299 $files = new ilFileWizardInputGUI($lng->txt('objs_file'), 'files');
300 $files->setFilenames(array(0 => ''));
301 $form->addItem($files);
302 }
303
304 // Schedule
305 $sub_header = new ilFormSectionHeaderGUI();
306 $sub_header->setTitle($lng->txt("exc_schedule"), "schedule");
307 $form->addItem($sub_header);
308
309 // start time
310 $start_date = new ilDateTimeInputGUI($lng->txt("exc_start_time"), "start_time");
311 $start_date->setShowTime(true);
312 $form->addItem($start_date);
313
314 // Deadline
315 $deadline = new ilDateTimeInputGUI($lng->txt("exc_deadline"), "deadline");
316 $deadline->setShowTime(true);
317 $form->addItem($deadline);
318
319 // extended Deadline
320 $deadline2 = new ilDateTimeInputGUI($lng->txt("exc_deadline_extended"), "deadline2");
321 $deadline2->setInfo($lng->txt("exc_deadline_extended_info"));
322 $deadline2->setShowTime(true);
323 $deadline->addSubItem($deadline2);
324
325
326 // max number of files
330 $type_name = $lng->txt("exc_type_upload");
331 }
333 $type_name = $lng->txt("exc_type_upload_team");
334 }
335
336 // custom section depending of assignment type
337 $sub_header = new ilFormSectionHeaderGUI();
338 $sub_header->setTitle($type_name);
339 $form->addItem($sub_header);
340 $max_file_tgl = new ilCheckboxInputGUI($lng->txt("exc_max_file_tgl"), "max_file_tgl");
341 $form->addItem($max_file_tgl);
342
343 $max_file = new ilNumberInputGUI($lng->txt("exc_max_file"), "max_file");
344 $max_file->setInfo($lng->txt("exc_max_file_info"));
345 $max_file->setRequired(true);
346 $max_file->setSize(3);
347 $max_file->setMinValue(1);
348 $max_file_tgl->addSubItem($max_file);
349 }
350
352 $cbtut = new ilCheckboxInputGUI($lng->txt("exc_team_management_tutor"), "team_tutor");
353 $cbtut->setInfo($lng->txt("exc_team_management_tutor_info"));
354 $cbtut->setChecked(false);
355 $form->addItem($cbtut);
356 }
357 // after submission
358 $sub_header = new ilFormSectionHeaderGUI();
359 $sub_header->setTitle($lng->txt("exc_after_submission"), "after_submission");
360 $form->addItem($sub_header);
362 // peer review
363 $peer = new ilCheckboxInputGUI($lng->txt("exc_peer_review"), "peer");
364 $peer->setInfo($lng->txt("exc_peer_review_ass_setting_info"));
365 $form->addItem($peer);
366 }
367
368
369 // global feedback
370
371 $fb = new ilCheckboxInputGUI($lng->txt("exc_global_feedback_file"), "fb");
372 $form->addItem($fb);
373
374 $fb_file = new ilFileInputGUI($lng->txt("file"), "fb_file");
375 $fb_file->setRequired(true); // will be disabled on update if file exists - see getAssignmentValues()
376 // $fb_file->setAllowDeletion(true); makes no sense if required (overwrite or keep)
377 $fb->addSubItem($fb_file);
378
379 $fb_date = new ilRadioGroupInputGUI($lng->txt("exc_global_feedback_file_date"), "fb_date");
380 $fb_date->setRequired(true);
381 $fb_date->addOption(new ilRadioOption($lng->txt("exc_global_feedback_file_date_deadline"), ilExAssignment::FEEDBACK_DATE_DEADLINE));
382 $fb_date->addOption(new ilRadioOption($lng->txt("exc_global_feedback_file_date_upload"), ilExAssignment::FEEDBACK_DATE_SUBMISSION));
383 $fb->addSubItem($fb_date);
384
385 $fb_cron = new ilCheckboxInputGUI($lng->txt("exc_global_feedback_file_cron"), "fb_cron");
386 $fb_cron->setInfo($lng->txt("exc_global_feedback_file_cron_info"));
387 $fb->addSubItem($fb_cron);
388
389
390 if ($a_mode == "create") {
391 $form->addCommandButton("saveAssignment", $lng->txt("save"));
392 $form->addCommandButton("listAssignments", $lng->txt("cancel"));
393 } else {
394 $form->addCommandButton("updateAssignment", $lng->txt("save"));
395 $form->addCommandButton("listAssignments", $lng->txt("cancel"));
396 }
397
398 return $form;
399 }
$files
Definition: add-vimline.php:18
This class represents a checkbox property in a property form.
This class represents a date/time property in a property form.
getTypeDropdown()
Get type selection dropdown.
This class represents a file property in a property form.
This class represents a file wizard property in a property form.
This class represents a section header in a property form.
This class represents a number property in a property form.
This class represents a text area property in a property form.
This class represents a text property in a property form.
$a_type
Definition: workflow.php:92

References $_POST, $a_type, $ctrl, $files, $form, $ilCtrl, $lng, ilExAssignment\FEEDBACK_DATE_DEADLINE, ilExAssignment\FEEDBACK_DATE_SUBMISSION, getTypeDropdown(), ilExAssignment\TYPE_PORTFOLIO, ilExAssignment\TYPE_TEXT, ilExAssignment\TYPE_UPLOAD, and ilExAssignment\TYPE_UPLOAD_TEAM.

Referenced by addAssignmentObject(), editAssignmentObject(), executeCommand(), saveAssignmentObject(), and updateAssignmentObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initPeerReviewForm()

ilExAssignmentEditorGUI::initPeerReviewForm ( )
protected

Definition at line 990 of file class.ilExAssignmentEditorGUI.php.

991 {
994
995 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
996 $form = new ilPropertyFormGUI();
997 $form->setTitle($lng->txt("exc_peer_review"));
998 $form->setFormAction($ilCtrl->getFormAction($this));
999
1000 $peer_min = new ilNumberInputGUI($lng->txt("exc_peer_review_min_number"), "peer_min");
1001 $peer_min->setInfo($lng->txt("exc_peer_review_min_number_info")); // #16161
1002 $peer_min->setRequired(true);
1003 $peer_min->setSize(3);
1004 $peer_min->setValue(2);
1005 $form->addItem($peer_min);
1006
1007 $peer_unlock = new ilRadioGroupInputGUI($lng->txt("exc_peer_review_simple_unlock"), "peer_unlock");
1008 $peer_unlock->addOption(new ilRadioOption($lng->txt("exc_peer_review_simple_unlock_active"), 1));
1009 $peer_unlock->addOption(new ilRadioOption($lng->txt("exc_peer_review_simple_unlock_inactive"), 0));
1010 $peer_unlock->setRequired(true);
1011 $peer_unlock->setValue(0);
1012 $form->addItem($peer_unlock);
1013
1014 if ($this->enable_peer_review_completion) {
1015 $peer_cmpl = new ilRadioGroupInputGUI($lng->txt("exc_peer_review_completion"), "peer_valid");
1016 $option = new ilRadioOption($lng->txt("exc_peer_review_completion_none"), ilExAssignment::PEER_REVIEW_VALID_NONE);
1017 $option->setInfo($lng->txt("exc_peer_review_completion_none_info"));
1018 $peer_cmpl->addOption($option);
1019 $option = new ilRadioOption($lng->txt("exc_peer_review_completion_one"), ilExAssignment::PEER_REVIEW_VALID_ONE);
1020 $option->setInfo($lng->txt("exc_peer_review_completion_one_info"));
1021 $peer_cmpl->addOption($option);
1022 $option = new ilRadioOption($lng->txt("exc_peer_review_completion_all"), ilExAssignment::PEER_REVIEW_VALID_ALL);
1023 $option->setInfo($lng->txt("exc_peer_review_completion_all_info"));
1024 $peer_cmpl->addOption($option);
1025 $peer_cmpl->setRequired(true);
1026 $peer_cmpl->setValue(ilExAssignment::PEER_REVIEW_VALID_NONE);
1027 $form->addItem($peer_cmpl);
1028 }
1029
1030 $peer_dl = new ilDateTimeInputGUI($lng->txt("exc_peer_review_deadline"), "peer_dl");
1031 $peer_dl->setInfo($lng->txt("exc_peer_review_deadline_info"));
1032 $peer_dl->setShowTime(true);
1033 $form->addItem($peer_dl);
1034
1035 $peer_prsl = new ilCheckboxInputGUI($lng->txt("exc_peer_review_personal"), "peer_prsl");
1036 $peer_prsl->setInfo($lng->txt("exc_peer_review_personal_info"));
1037 $form->addItem($peer_prsl);
1038
1039
1040 // criteria
1041
1042 $cats = new ilRadioGroupInputGUI($lng->txt("exc_criteria_catalogues"), "crit_cat");
1043 $form->addItem($cats);
1044
1045 // default (no catalogue)
1046
1047 $def = new ilRadioOption($lng->txt("exc_criteria_catalogue_default"), -1);
1048 $cats->addOption($def);
1049
1050 $peer_text = new ilCheckboxInputGUI($lng->txt("exc_peer_review_text"), "peer_text");
1051 $def->addSubItem($peer_text);
1052
1053 $peer_char = new ilNumberInputGUI($lng->txt("exc_peer_review_min_chars"), "peer_char");
1054 $peer_char->setInfo($lng->txt("exc_peer_review_min_chars_info"));
1055 $peer_char->setSize(3);
1056 $peer_text->addSubItem($peer_char);
1057
1058 $peer_rating = new ilCheckboxInputGUI($lng->txt("exc_peer_review_rating"), "peer_rating");
1059 $def->addSubItem($peer_rating);
1060
1061 $peer_file = new ilCheckboxInputGUI($lng->txt("exc_peer_review_file"), "peer_file");
1062 $peer_file->setInfo($lng->txt("exc_peer_review_file_info"));
1063 $def->addSubItem($peer_file);
1064
1065 // catalogues
1066
1067 include_once "Modules/Exercise/classes/class.ilExcCriteriaCatalogue.php";
1068 $cat_objs = ilExcCriteriaCatalogue::getInstancesByParentId($this->exercise_id);
1069 if (sizeof($cat_objs)) {
1070 include_once "Modules/Exercise/classes/class.ilExcCriteria.php";
1071 foreach ($cat_objs as $cat_obj) {
1072 $crits = ilExcCriteria::getInstancesByParentId($cat_obj->getId());
1073
1074 // only non-empty catalogues
1075 if (sizeof($crits)) {
1076 $titles = array();
1077 foreach ($crits as $crit) {
1078 $titles[] = $crit->getTitle();
1079 }
1080 $opt = new ilRadioOption($cat_obj->getTitle(), $cat_obj->getId());
1081 $opt->setInfo(implode(", ", $titles));
1082 $cats->addOption($opt);
1083 }
1084 }
1085 } else {
1086 // see ilExcCriteriaCatalogueGUI::view()
1087 $url = $ilCtrl->getLinkTargetByClass("ilexccriteriacataloguegui", "");
1088 $def->setInfo('<a href="' . $url . '">[+] ' .
1089 $lng->txt("exc_add_criteria_catalogue") .
1090 '</a>');
1091 }
1092
1093
1094 $form->addCommandButton("updatePeerReview", $lng->txt("save"));
1095 $form->addCommandButton("editAssignment", $lng->txt("cancel"));
1096
1097 return $form;
1098 }
static getInstancesByParentId($a_parent_id)
static getInstancesByParentId($a_parent_id)
$def
Definition: croninfo.php:21
$url

References $ctrl, $def, $form, $ilCtrl, $lng, $url, ilExcCriteria\getInstancesByParentId(), ilExcCriteriaCatalogue\getInstancesByParentId(), ilExAssignment\PEER_REVIEW_VALID_ALL, ilExAssignment\PEER_REVIEW_VALID_NONE, and ilExAssignment\PEER_REVIEW_VALID_ONE.

Referenced by editPeerReviewObject(), and updatePeerReviewObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ listAssignmentsObject()

ilExAssignmentEditorGUI::listAssignmentsObject ( )

List assignments.

Definition at line 134 of file class.ilExAssignmentEditorGUI.php.

135 {
137 $ilToolbar = $this->toolbar;
140
141 $ilToolbar->setFormAction($ilCtrl->getFormAction($this, "addAssignment"));
142
143 include_once "Services/Form/classes/class.ilSelectInputGUI.php";
144 $ilToolbar->addStickyItem($this->getTypeDropdown());
145
146 include_once "Services/UIComponent/Button/classes/class.ilSubmitButton.php";
147 $button = ilSubmitButton::getInstance();
148 $button->setCaption("exc_add_assignment");
149 $button->setCommand("addAssignment");
150 $ilToolbar->addStickyItem($button);
151
152
153 include_once("./Modules/Exercise/classes/class.ilAssignmentsTableGUI.php");
154 $t = new ilAssignmentsTableGUI($this, "listAssignments", $this->exercise_id);
155 $tpl->setContent($t->getHTML());
156 }
static getInstance()
Factory.

References $ctrl, $ilCtrl, $lng, $t, $toolbar, $tpl, ilSubmitButton\getInstance(), and getTypeDropdown().

+ Here is the call graph for this function:

◆ orderAssignmentsByDeadlineObject()

ilExAssignmentEditorGUI::orderAssignmentsByDeadlineObject ( )

Order by deadline.

Definition at line 918 of file class.ilExAssignmentEditorGUI.php.

919 {
922
923 ilExAssignment::orderAssByDeadline($this->exercise_id);
924
925 ilUtil::sendSuccess($lng->txt("exc_saved_order"), true);
926 $ilCtrl->redirect($this, "listAssignments");
927 }
static orderAssByDeadline($a_ex_id)
Order assignments by deadline date.

References $ctrl, $ilCtrl, $lng, ilExAssignment\orderAssByDeadline(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ processForm()

ilExAssignmentEditorGUI::processForm ( ilPropertyFormGUI  $a_form)
protected

Custom form validation.

Parameters
ilPropertyFormGUI$a_form
Returns
array

Definition at line 407 of file class.ilExAssignmentEditorGUI.php.

408 {
410
411 $protected_peer_review_groups = false;
412
413 if ($this->assignment) {
414 if ($this->assignment->getPeerReview()) {
415 include_once "Modules/Exercise/classes/class.ilExPeerReview.php";
416 $peer_review = new ilExPeerReview($this->assignment);
417 if ($peer_review->hasPeerReviewGroups()) {
418 $protected_peer_review_groups = true;
419 }
420 }
421
422 if ($this->assignment->getFeedbackFile()) {
423 $a_form->getItemByPostVar("fb_file")->setRequired(false); // #15467
424 }
425 }
426
427 $valid = $a_form->checkInput();
428
429 if ($protected_peer_review_groups) {
430 // checkInput() will add alert to disabled fields
431 $a_form->getItemByPostVar("deadline")->setAlert(null);
432 $a_form->getItemByPostVar("deadline2")->setAlert(null);
433 }
434
435 if ($valid) {
436 // dates
437
438 $time_start = $a_form->getItemByPostVar("start_time")->getDate();
439 $time_start = $time_start
440 ? $time_start->get(IL_CAL_UNIX)
441 : null;
442 $time_deadline = $a_form->getItemByPostVar("deadline")->getDate();
443 $time_deadline = $time_deadline
444 ? $time_deadline->get(IL_CAL_UNIX)
445 : null;
446 $time_deadline_ext = $a_form->getItemByPostVar("deadline2")->getDate();
447 $time_deadline_ext = $time_deadline_ext
448 ? $time_deadline_ext->get(IL_CAL_UNIX)
449 : null;
450
451 // handle disabled elements
452 if ($protected_peer_review_groups) {
453 $time_deadline = $this->assignment->getDeadline();
454 $time_deadline_ext = $this->assignment->getExtendedDeadline();
455 }
456
457 // no deadline?
458 if (!$time_deadline) {
459 // peer review
460 if (!$protected_peer_review_groups &&
461 $a_form->getInput("peer")) {
462 $a_form->getItemByPostVar("peer")
463 ->setAlert($lng->txt("exc_needs_deadline"));
464 $valid = false;
465 }
466 // global feedback
467 if ($a_form->getInput("fb") &&
468 $a_form->getInput("fb_date") == ilExAssignment::FEEDBACK_DATE_DEADLINE) {
469 $a_form->getItemByPostVar("fb")
470 ->setAlert($lng->txt("exc_needs_deadline"));
471 $valid = false;
472 }
473 } else {
474 // #18269
475 if ($a_form->getInput("peer")) {
476 $time_deadline_max = max($time_deadline, $time_deadline_ext);
477 $peer_dl = $this->assignment // #18380
478 ? $this->assignment->getPeerReviewDeadline()
479 : null;
480 if ($peer_dl && $peer_dl < $time_deadline_max) {
481 $a_form->getItemByPostVar($peer_dl < $time_deadline_ext
482 ? "deadline2"
483 : "deadline")
484 ->setAlert($lng->txt("exc_peer_deadline_mismatch"));
485 $valid = false;
486 }
487 }
488
489 if ($time_deadline_ext && $time_deadline_ext < $time_deadline) {
490 $a_form->getItemByPostVar("deadline2")
491 ->setAlert($lng->txt("exc_deadline_ext_mismatch"));
492 $valid = false;
493 }
494
495 $time_deadline_min = $time_deadline_ext
496 ? min($time_deadline, $time_deadline_ext)
497 : $time_deadline;
498 $time_deadline_max = max($time_deadline, $time_deadline_ext);
499
500 // start > any deadline ?
501 if ($time_start && $time_deadline_min && $time_start > $time_deadline_min) {
502 $a_form->getItemByPostVar("start_time")
503 ->setAlert($lng->txt("exc_start_date_should_be_before_end_date"));
504 $valid = false;
505 }
506 }
507
508 if ($valid) {
509 $res = array(
510 // core
511 "type" => $a_form->getInput("type")
512 ,"title" => trim($a_form->getInput("title"))
513 ,"instruction" => trim($a_form->getInput("instruction"))
514 ,"mandatory" => $a_form->getInput("mandatory")
515 // dates
516 ,"start" => $time_start
517 ,"deadline" => $time_deadline
518 ,"deadline_ext" => $time_deadline_ext
519 ,"max_file" => $a_form->getInput("max_file_tgl")
520 ? $a_form->getInput("max_file")
521 : null
522 ,"team_tutor" => $a_form->getInput("team_tutor")
523 );
524 // portfolio template
525 if ($a_form->getInput("template_id") && $a_form->getInput("template")) {
526 $res['template_id'] = $a_form->getInput("template_id");
527 }
528
529 // text limitations
530 if ($a_form->getInput("limit_characters")) {
531 $res['limit_characters'] = $a_form->getInput("limit_characters");
532 }
533 if ($a_form->getInput("limit_characters") && $a_form->getInput("max_char_limit")) {
534 $res['max_char_limit'] = $a_form->getInput("max_char_limit");
535 }
536 if ($a_form->getInput("limit_characters") && $a_form->getInput("min_char_limit")) {
537 $res['min_char_limit'] = $a_form->getInput("min_char_limit");
538 }
539
540 // peer
541 if ($a_form->getInput("peer") ||
542 $protected_peer_review_groups) {
543 $res["peer"] = true;
544 }
545
546 // files
547 if (is_array($_FILES["files"])) {
548 // #15994 - we are keeping the upload files array structure
549 // see ilFSStorageExercise::uploadAssignmentFiles()
550 $res["files"] = $_FILES["files"];
551 }
552
553 // global feedback
554 if ($a_form->getInput("fb")) {
555 $res["fb"] = true;
556 $res["fb_cron"] = $a_form->getInput("fb_cron");
557 $res["fb_date"] = $a_form->getInput("fb_date");
558 if ($_FILES["fb_file"]["tmp_name"]) {
559 $res["fb_file"] = $_FILES["fb_file"];
560 }
561 }
562
563 return $res;
564 } else {
565 ilUtil::sendFailure($lng->txt("form_input_not_valid"));
566 }
567 }
568 }
getInput($a_post_var, $ensureValidation=true)
Returns the value of a HTTP-POST variable, identified by the passed id.
checkInput()
Check Post Input.
$valid
foreach($_POST as $key=> $value) $res

References $lng, $res, $valid, ilPropertyFormGUI\checkInput(), ilExAssignment\FEEDBACK_DATE_DEADLINE, ilPropertyFormGUI\getInput(), ilPropertyFormGUI\getItemByPostVar(), IL_CAL_UNIX, and ilUtil\sendFailure().

Referenced by saveAssignmentObject(), and updateAssignmentObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ processPeerReviewForm()

ilExAssignmentEditorGUI::processPeerReviewForm ( ilPropertyFormGUI  $a_form)
protected

Definition at line 1189 of file class.ilExAssignmentEditorGUI.php.

1190 {
1191 $lng = $this->lng;
1192
1193 $protected_peer_review_groups = false;
1194 include_once "Modules/Exercise/classes/class.ilExPeerReview.php";
1195 $peer_review = new ilExPeerReview($this->assignment);
1196 if ($peer_review->hasPeerReviewGroups()) {
1197 $protected_peer_review_groups = true;
1198 }
1199
1200 $valid = $a_form->checkInput();
1201 if ($valid) {
1202 // dates
1203 $time_deadline = $this->assignment->getDeadline();
1204 $time_deadline_ext = $this->assignment->getExtendedDeadline();
1205 $time_deadline_max = max($time_deadline, $time_deadline_ext);
1206
1207 $date = $a_form->getItemByPostVar("peer_dl")->getDate();
1208 $time_peer = $date
1209 ? $date->get(IL_CAL_UNIX)
1210 : null;
1211
1212 // peer < any deadline?
1213 if ($time_peer && $time_deadline_max && $time_peer < $time_deadline_max) {
1214 $a_form->getItemByPostVar("peer_dl")
1215 ->setAlert($lng->txt("exc_peer_deadline_mismatch"));
1216 $valid = false;
1217 }
1218
1219 if (!$protected_peer_review_groups) {
1220 if ($a_form->getInput("crit_cat") < 0 &&
1221 !$a_form->getInput("peer_text") &&
1222 !$a_form->getInput("peer_rating") &&
1223 !$a_form->getInput("peer_file")) {
1224 $a_form->getItemByPostVar("peer_file")
1225 ->setAlert($lng->txt("select_one"));
1226 $valid = false;
1227 }
1228 }
1229
1230 if ($valid) {
1231 $res = array();
1232 $res["peer_dl"] = $time_peer;
1233
1234 if ($protected_peer_review_groups) {
1235 $res["peer_min"] = $this->assignment->getPeerReviewMin();
1236 $res["peer_unlock"] = $this->assignment->getPeerReviewSimpleUnlock();
1237 $res["peer_prsl"] = $this->assignment->hasPeerReviewPersonalized();
1238 $res["peer_valid"] = $this->assignment->getPeerReviewValid();
1239
1240 $res["peer_text"] = $this->assignment->hasPeerReviewText();
1241 $res["peer_rating"] = $this->assignment->hasPeerReviewRating();
1242 $res["peer_file"] = $this->assignment->hasPeerReviewFileUpload();
1243 $res["peer_char"] = $this->assignment->getPeerReviewChars();
1244 $res["crit_cat"] = $this->assignment->getPeerReviewCriteriaCatalogue();
1245
1246 $res["peer_valid"] = $this->enable_peer_review_completion
1247 ? $res["peer_valid"]
1248 : null;
1249 } else {
1250 $res["peer_min"] = $a_form->getInput("peer_min");
1251 $res["peer_unlock"] = $a_form->getInput("peer_unlock");
1252 $res["peer_prsl"] = $a_form->getInput("peer_prsl");
1253 $res["peer_valid"] = $a_form->getInput("peer_valid");
1254
1255 $res["peer_text"] = $a_form->getInput("peer_text");
1256 $res["peer_rating"] = $a_form->getInput("peer_rating");
1257 $res["peer_file"] = $a_form->getInput("peer_file");
1258 $res["peer_char"] = $a_form->getInput("peer_char");
1259 $res["crit_cat"] = $a_form->getInput("crit_cat");
1260 }
1261
1262 return $res;
1263 } else {
1264 ilUtil::sendFailure($lng->txt("form_input_not_valid"));
1265 }
1266 }
1267 }

References $lng, $res, $valid, ilPropertyFormGUI\checkInput(), ilPropertyFormGUI\getInput(), ilPropertyFormGUI\getItemByPostVar(), IL_CAL_UNIX, and ilUtil\sendFailure().

Referenced by updatePeerReviewObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveAssignmentObject()

ilExAssignmentEditorGUI::saveAssignmentObject ( )

Save assignment.

Definition at line 645 of file class.ilExAssignmentEditorGUI.php.

646 {
650
651 // #16163 - ignore ass id from request
652 $this->assignment = null;
653
654 $form = $this->initAssignmentForm((int) $_POST["type"], "create");
655 $input = $this->processForm($form);
656 if (is_array($input)) {
657 $ass = new ilExAssignment();
658 $ass->setExerciseId($this->exercise_id);
659 $ass->setType($input["type"]);
660
661 $this->importFormToAssignment($ass, $input);
662 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
663
664 // adopt teams for team upload?
665 if ($ass->getType() == ilExAssignment::TYPE_UPLOAD_TEAM) {
666 include_once "Modules/Exercise/classes/class.ilExAssignmentTeam.php";
667 if (sizeof(ilExAssignmentTeam::getAdoptableTeamAssignments($this->exercise_id, $ass->getId()))) {
668 $ilCtrl->setParameter($this, "ass_id", $ass->getId());
669 $ilCtrl->redirect($this, "adoptTeamAssignmentsForm");
670 }
671 }
672
673 // because of sub-tabs we stay on settings screen
674 $ilCtrl->setParameter($this, "ass_id", $ass->getId());
675 $ilCtrl->redirect($this, "editAssignment");
676 } else {
677 $form->setValuesByPost();
678 $tpl->setContent($form->getHtml());
679 }
680 }
importFormToAssignment(ilExAssignment $a_ass, array $a_input)
Import form values to assignment.
processForm(ilPropertyFormGUI $a_form)
Custom form validation.

References $_POST, $ctrl, $form, $ilCtrl, $lng, $tpl, ilExAssignmentTeam\getAdoptableTeamAssignments(), importFormToAssignment(), initAssignmentForm(), processForm(), ilUtil\sendSuccess(), and ilExAssignment\TYPE_UPLOAD_TEAM.

+ Here is the call graph for this function:

◆ saveAssignmentOrderObject()

ilExAssignmentEditorGUI::saveAssignmentOrderObject ( )

Save assignments order.

Definition at line 904 of file class.ilExAssignmentEditorGUI.php.

905 {
908
909 ilExAssignment::saveAssOrderOfExercise($this->exercise_id, $_POST["order"]);
910
911 ilUtil::sendSuccess($lng->txt("exc_saved_order"), true);
912 $ilCtrl->redirect($this, "listAssignments");
913 }
static saveAssOrderOfExercise($a_ex_id, $a_order)
Save ordering of all assignments of an exercise.

References $_POST, $ctrl, $ilCtrl, $lng, ilExAssignment\saveAssOrderOfExercise(), and ilUtil\sendSuccess().

+ Here is the call graph for this function:

◆ setAssignmentHeader()

ilExAssignmentEditorGUI::setAssignmentHeader ( )

Set assignment header.

Definition at line 932 of file class.ilExAssignmentEditorGUI.php.

933 {
934 $ilTabs = $this->tabs;
938 $ilHelp = $this->help;
939
940 $tpl->setTitle($this->assignment->getTitle());
941 $tpl->setDescription("");
942
943 $ilTabs->clearTargets();
944 $ilHelp->setScreenIdComponent("exc");
945
946 $ilTabs->setBackTarget(
947 $lng->txt("back"),
948 $ilCtrl->getLinkTarget($this, "listAssignments")
949 );
950
951 $ilTabs->addTab(
952 "ass_settings",
953 $lng->txt("settings"),
954 $ilCtrl->getLinkTarget($this, "editAssignment")
955 );
956
957 if ($this->assignment->getType() != ilExAssignment::TYPE_UPLOAD_TEAM &&
958 $this->assignment->getPeerReview()) {
959 $ilTabs->addTab(
960 "peer_settings",
961 $lng->txt("exc_peer_review"),
962 $ilCtrl->getLinkTarget($this, "editPeerReview")
963 );
964 }
965
966 $ilTabs->addTab(
967 "ass_files",
968 $lng->txt("exc_instruction_files"),
969 $ilCtrl->getLinkTargetByClass(array("ilexassignmenteditorgui", "ilexassignmentfilesystemgui"), "listFiles")
970 );
971 }

References $ctrl, $help, $ilCtrl, $lng, $tabs, $tpl, and ilExAssignment\TYPE_UPLOAD_TEAM.

Referenced by editAssignmentObject(), editPeerReviewObject(), executeCommand(), updateAssignmentObject(), and updatePeerReviewObject().

+ Here is the caller graph for this function:

◆ setDisabledFieldValues()

ilExAssignmentEditorGUI::setDisabledFieldValues ( ilPropertyFormGUI  $a_form)
protected

Definition at line 762 of file class.ilExAssignmentEditorGUI.php.

763 {
764 // dates
765 if ($this->assignment->getDeadline() > 0) {
766 $edit_date = new ilDateTime($this->assignment->getDeadline(), IL_CAL_UNIX);
767 $ed_item = $a_form->getItemByPostVar("deadline");
768 $ed_item->setDate($edit_date);
769
770 if ($this->assignment->getExtendedDeadline() > 0) {
771 $edit_date = new ilDateTime($this->assignment->getExtendedDeadline(), IL_CAL_UNIX);
772 $ed_item = $a_form->getItemByPostVar("deadline2");
773 $ed_item->setDate($edit_date);
774 }
775 }
776
777 if ($this->assignment->getPeerReview()) {
778 $a_form->getItemByPostVar("peer")->setChecked($this->assignment->getPeerReview());
779 }
780 }

References ilPropertyFormGUI\getItemByPostVar(), and IL_CAL_UNIX.

Referenced by handleDisabledFields().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setDisabledPeerReviewFieldValues()

ilExAssignmentEditorGUI::setDisabledPeerReviewFieldValues ( ilPropertyFormGUI  $a_form)
protected

Definition at line 1129 of file class.ilExAssignmentEditorGUI.php.

1130 {
1131 $a_form->getItemByPostVar("peer_min")->setValue($this->assignment->getPeerReviewMin());
1132 $a_form->getItemByPostVar("peer_prsl")->setChecked($this->assignment->hasPeerReviewPersonalized());
1133 $a_form->getItemByPostVar("peer_unlock")->setValue((int) $this->assignment->getPeerReviewSimpleUnlock());
1134
1135 if ($this->enable_peer_review_completion) {
1136 $a_form->getItemByPostVar("peer_valid")->setValue($this->assignment->getPeerReviewValid());
1137 }
1138
1139 $cat = $this->assignment->getPeerReviewCriteriaCatalogue();
1140 if ($cat < 1) {
1141 $cat = -1;
1142
1143 // default / no catalogue
1144 $a_form->getItemByPostVar("peer_text")->setChecked($this->assignment->hasPeerReviewText());
1145 $a_form->getItemByPostVar("peer_rating")->setChecked($this->assignment->hasPeerReviewRating());
1146 $a_form->getItemByPostVar("peer_file")->setChecked($this->assignment->hasPeerReviewFileUpload());
1147 if ($this->assignment->getPeerReviewChars() > 0) {
1148 $a_form->getItemByPostVar("peer_char")->setValue($this->assignment->getPeerReviewChars());
1149 }
1150 }
1151 $a_form->getItemByPostVar("crit_cat")->setValue($cat);
1152 }

References ilPropertyFormGUI\getItemByPostVar().

Referenced by handleDisabledPeerFields().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateAssignmentObject()

ilExAssignmentEditorGUI::updateAssignmentObject ( )

Update assignment.

Definition at line 813 of file class.ilExAssignmentEditorGUI.php.

814 {
818 $ilTabs = $this->tabs;
819
820 $form = $this->initAssignmentForm($this->assignment->getType(), "edit");
821 $input = $this->processForm($form);
822 if (is_array($input)) {
823 $old_deadline = $this->assignment->getDeadline();
824 $old_ext_deadline = $this->assignment->getExtendedDeadline();
825
826 $this->importFormToAssignment($this->assignment, $input);
827
828 $new_deadline = $this->assignment->getDeadline();
829 $new_ext_deadline = $this->assignment->getExtendedDeadline();
830
831 // if deadlines were changed
832 if ($old_deadline != $new_deadline ||
833 $old_ext_deadline != $new_ext_deadline) {
834 $this->assignment->recalculateLateSubmissions();
835 }
836
837 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
838 $ilCtrl->redirect($this, "editAssignment");
839 } else {
840 $this->setAssignmentHeader();
841 $ilTabs->activateTab("ass_settings");
842
843 $form->setValuesByPost();
845 $tpl->setContent($form->getHtml());
846 }
847 }

References $ctrl, $form, $ilCtrl, $lng, $tabs, $tpl, handleDisabledFields(), importFormToAssignment(), initAssignmentForm(), processForm(), ilUtil\sendSuccess(), and setAssignmentHeader().

+ Here is the call graph for this function:

◆ updatePeerReviewObject()

ilExAssignmentEditorGUI::updatePeerReviewObject ( )
protected

Definition at line 1292 of file class.ilExAssignmentEditorGUI.php.

1293 {
1294 $tpl = $this->tpl;
1295 $lng = $this->lng;
1297 $ilTabs = $this->tabs;
1298
1299 $form = $this->initPeerReviewForm();
1300 $input = $this->processPeerReviewForm($form);
1301 if (is_array($input)) {
1302 $this->importPeerReviewFormToAssignment($this->assignment, $input);
1303
1304 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
1305 $ilCtrl->redirect($this, "editPeerReview");
1306 } else {
1307 $this->setAssignmentHeader();
1308 $ilTabs->activateTab("peer_settings");
1309
1310 $form->setValuesByPost();
1312 $tpl->setContent($form->getHtml());
1313 }
1314 }
processPeerReviewForm(ilPropertyFormGUI $a_form)
importPeerReviewFormToAssignment(ilExAssignment $a_ass, array $a_input)

References $ctrl, $form, $ilCtrl, $lng, $tabs, $tpl, handleDisabledPeerFields(), importPeerReviewFormToAssignment(), initPeerReviewForm(), processPeerReviewForm(), ilUtil\sendSuccess(), and setAssignmentHeader().

+ Here is the call graph for this function:

Field Documentation

◆ $assignment

ilExAssignmentEditorGUI::$assignment
protected

Definition at line 54 of file class.ilExAssignmentEditorGUI.php.

◆ $ctrl

◆ $enable_peer_review_completion

ilExAssignmentEditorGUI::$enable_peer_review_completion
protected

Definition at line 55 of file class.ilExAssignmentEditorGUI.php.

◆ $exercise_id

ilExAssignmentEditorGUI::$exercise_id
protected

Definition at line 53 of file class.ilExAssignmentEditorGUI.php.

◆ $help

ilExAssignmentEditorGUI::$help
protected

Definition at line 51 of file class.ilExAssignmentEditorGUI.php.

Referenced by setAssignmentHeader().

◆ $lng

◆ $settings

ilExAssignmentEditorGUI::$settings
protected

Definition at line 46 of file class.ilExAssignmentEditorGUI.php.

Referenced by getTypeDropdown().

◆ $tabs

◆ $toolbar

ilExAssignmentEditorGUI::$toolbar
protected

Definition at line 41 of file class.ilExAssignmentEditorGUI.php.

Referenced by listAssignmentsObject().

◆ $tpl


The documentation for this class was generated from the following file: