public function setValueByArray($a_values)
 {
     parent::setValueByArray($a_values);
     foreach ((array) $_POST[$this->getPostVar() . '_open'] as $oindex => $ovalue) {
         $this->addOpenAnswerIndex($oindex);
     }
 }
 /**
  * Creates an output of the edit form for the question
  *
  * @access public
  */
 function editQuestion($checkonly = FALSE)
 {
     $save = $this->isSaveCommand();
     $this->getQuestionTemplate();
     include_once "./Services/Form/classes/class.ilPropertyFormGUI.php";
     $orderingtype = array_key_exists('ordering_type', $_POST) ? $_POST['ordering_type'] : $this->object->getOrderingType();
     if (strcmp($this->ctrl->getCmd(), 'changeToText') == 0) {
         $orderingtype = OQ_TERMS;
     }
     if (strcmp($this->ctrl->getCmd(), 'changeToPictures') == 0) {
         $orderingtype = OQ_PICTURES;
     }
     $form = new ilPropertyFormGUI();
     $form->setFormAction($this->ctrl->getFormAction($this));
     $form->setTitle($this->outQuestionType());
     $form->setMultipart($orderingtype == OQ_PICTURES ? TRUE : FALSE);
     $form->setTableWidth("100%");
     $form->setId("ordering");
     // Edit mode
     $hidden = new ilHiddenInputGUI("ordering_type");
     $hidden->setValue($orderingtype);
     $form->addItem($hidden);
     // title, author, description, question, working time (assessment mode)
     $this->addBasicQuestionFormProperties($form);
     if (!$this->getSelfAssessmentEditingMode()) {
         $element_height = new ilNumberInputGUI($this->lng->txt("element_height"), "element_height");
         $element_height->setValue($this->object->getElementHeight());
         $element_height->setRequired(false);
         $element_height->setMaxLength(6);
         $element_height->setMinValue(20);
         $element_height->setSize(6);
         $element_height->setInfo($this->lng->txt("element_height_info"));
         $form->addItem($element_height);
     }
     if ($orderingtype == OQ_PICTURES) {
         $geometry = new ilNumberInputGUI($this->lng->txt("thumb_geometry"), "thumb_geometry");
         $geometry->setValue($this->object->getThumbGeometry());
         $geometry->setRequired(true);
         $geometry->setMaxLength(6);
         $geometry->setMinValue(20);
         $geometry->setSize(6);
         $geometry->setInfo($this->lng->txt("thumb_geometry_info"));
         $form->addItem($geometry);
     }
     if (count($this->object->getAnswers()) == 0) {
         $this->object->addAnswer();
     }
     // Answers
     if ($orderingtype == OQ_PICTURES) {
         include_once "./Modules/TestQuestionPool/classes/class.ilImageWizardInputGUI.php";
         $answers = new ilImageWizardInputGUI($this->lng->txt("answers"), "answers");
         $answers->setRequired(TRUE);
         $answers->setQuestionObject($this->object);
         $answers->setInfo($this->lng->txt('ordering_answer_sequence_info'));
         $answers->setAllowMove(TRUE);
         $answervalues = array();
         foreach ($this->object->getAnswers() as $index => $answervalue) {
             $answervalues[$index] = $answervalue->getAnswertext();
         }
         $answers->setValues($answervalues);
         $form->addItem($answers);
     } else {
         $answers = new ilTextWizardInputGUI($this->lng->txt("answers"), "answers");
         $answers->setRequired(TRUE);
         $answers->setInfo($this->lng->txt('ordering_answer_sequence_info'));
         $answers->setAllowMove(TRUE);
         $answervalues = array();
         foreach ($this->object->getAnswers() as $index => $answervalue) {
             $answervalues[$index] = $answervalue->getAnswertext();
         }
         ksort($answervalues);
         $answers->setValues($answervalues);
         $form->addItem($answers);
     }
     // points
     $points = new ilNumberInputGUI($this->lng->txt("points"), "points");
     $points->setValue($this->object->getPoints());
     $points->setRequired(TRUE);
     $points->setSize(3);
     $points->setMinValue(0);
     $points->setMinvalueShouldBeGreater(true);
     $form->addItem($points);
     if (true || !$this->getSelfAssessmentEditingMode()) {
         if ($orderingtype == OQ_PICTURES) {
             $form->addCommandButton("changeToText", $this->lng->txt("order_terms"));
         } else {
             $form->addCommandButton("changeToPictures", $this->lng->txt("order_pictures"));
         }
     }
     $this->addQuestionFormCommandButtons($form);
     $errors = false;
     if ($save) {
         $form->setValuesByPost();
         $errors = !$form->checkInput();
         $form->setValuesByPost();
         // again, because checkInput now performs the whole stripSlashes handling and we need this if we don't want to have duplication of backslashes
         if ($errors) {
             $checkonly = false;
         }
     }
     if (!$checkonly) {
         $this->tpl->setVariable("QUESTION_DATA", $form->getHTML());
     }
     return $errors;
 }
 public function __construct($a_title = "", $a_postvar = "")
 {
     parent::__construct($a_title, $a_postvar);
 }
 /**
  * init form
  *
  * @access protected
  * @param string mode ('edit' | 'create')
  * @return
  */
 protected function initForm($a_mode, $a_as_milestone = false, $a_edit_single_app = false)
 {
     global $ilUser, $tpl;
     include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
     include_once './Services/Calendar/classes/class.ilCalendarRecurrenceGUI.php';
     include_once './Services/Calendar/classes/class.ilCalendarCategories.php';
     include_once './Services/Calendar/classes/class.ilCalendarCategoryAssignments.php';
     include_once './Services/Calendar/classes/class.ilCalendarCategory.php';
     $this->form = new ilPropertyFormGUI();
     include_once './Services/YUI/classes/class.ilYuiUtil.php';
     ilYuiUtil::initDomEvent();
     $resp_info = false;
     switch ($a_mode) {
         case 'create':
             $this->ctrl->saveParameter($this, array('seed', 'idate'));
             $this->form->setFormAction($this->ctrl->getFormAction($this));
             if ($a_as_milestone) {
                 $this->form->setTitle($this->lng->txt('cal_new_ms'));
                 $this->form->addCommandButton('saveMilestone', $this->lng->txt('cal_add_milestone'));
                 $this->form->addCommandButton('cancel', $this->lng->txt('cancel'));
             } else {
                 $this->form->setTitle($this->lng->txt('cal_new_app'));
                 $this->form->addCommandButton('save', $this->lng->txt('cal_add_appointment'));
                 $this->form->addCommandButton('cancel', $this->lng->txt('cancel'));
             }
             break;
         case 'edit':
             if ($a_as_milestone) {
                 $this->form->setTitle($this->lng->txt('cal_edit_milestone'));
             } else {
                 $this->form->setTitle($this->lng->txt('cal_edit_appointment'));
             }
             $this->ctrl->saveParameter($this, array('seed', 'app_id', 'idate'));
             $this->form->setFormAction($this->ctrl->getFormAction($this));
             $ass = new ilCalendarCategoryAssignments($this->app->getEntryId());
             $cat = $ass->getFirstAssignment();
             include_once './Services/Calendar/classes/class.ilCalendarCategory.php';
             $cat_info = ilCalendarCategories::_getInstance()->getCategoryInfo($cat);
             $type = ilObject::_lookupType($cat_info['obj_id']);
             if ($a_as_milestone && $cat_info['type'] == ilCalendarCategory::TYPE_OBJ && ($type == "grp" || $type == "crs")) {
                 $resp_info = true;
                 $this->form->addCommandButton('editResponsibleUsers', $this->lng->txt('cal_change_responsible_users'));
             }
             $this->form->addCommandButton('update', $this->lng->txt('save'));
             // $this->form->addCommandButton('askDelete',$this->lng->txt('delete'));
             $this->form->addCommandButton('cancel', $this->lng->txt('cancel'));
             break;
     }
     // title
     $title = new ilTextInputGUI($this->lng->txt('title'), 'title');
     $title->setValue($this->app->getTitle());
     $title->setRequired(true);
     $title->setMaxLength(128);
     $title->setSize(32);
     $this->form->addItem($title);
     // calendar selection
     $calendar = new ilSelectInputGUI($this->lng->txt('cal_category_selection'), 'calendar');
     if ($_POST['category']) {
         $calendar->setValue((int) $_POST['calendar']);
         $selected_calendar = (int) $_POST['calendar'];
     } else {
         if ($_GET['category_id']) {
             $calendar->setValue((int) $_GET['category_id']);
             $selected_calendar = (int) $_GET['category_id'];
         } elseif ($a_mode == 'edit') {
             $ass = new ilCalendarCategoryAssignments($this->app->getEntryId());
             $cat = $ass->getFirstAssignment();
             $calendar->setValue($cat);
             $selected_calendar = $cat;
         } elseif (isset($_GET['ref_id'])) {
             include_once './Services/Calendar/classes/class.ilCalendarCategories.php';
             $obj_cal = ilObject::_lookupObjId($_GET['ref_id']);
             $calendar->setValue(ilCalendarCategories::_lookupCategoryIdByObjId($obj_cal));
             $selected_calendar = ilCalendarCategories::_lookupCategoryIdByObjId($obj_cal);
         }
     }
     $calendar->setRequired(true);
     $cats = ilCalendarCategories::_getInstance($ilUser->getId());
     $calendar->setOptions($cats->prepareCategoriesOfUserForSelection());
     include_once './Services/Calendar/classes/class.ilCalendarSettings.php';
     if (ilCalendarSettings::_getInstance()->isNotificationEnabled()) {
         $notification_cals = $cats->getNotificationCalendars();
         $notification_cals = count($notification_cals) ? implode(',', $notification_cals) : '';
         $calendar->addCustomAttribute("onchange=\"ilToggleNotification(new Array(" . $notification_cals . "));\"");
     }
     $this->form->addItem($calendar);
     if (!$a_as_milestone) {
         include_once './Services/Form/classes/class.ilDateDurationInputGUI.php';
         $tpl->addJavaScript('./Services/Form/js/date_duration.js');
         $dur = new ilDateDurationInputGUI($this->lng->txt('cal_fullday'), 'event');
         $dur->setStartText($this->lng->txt('cal_start'));
         $dur->setEndText($this->lng->txt('cal_end'));
         $dur->enableToggleFullTime($this->lng->txt('cal_fullday_title'), $this->app->isFullday() ? true : false);
         $dur->setShowTime(true);
         $dur->setStart($this->app->getStart());
         $dur->setEnd($this->app->getEnd());
         $this->form->addItem($dur);
         // recurrence
         include_once './Services/Calendar/classes/Form/class.ilRecurrenceInputGUI.php';
         $rec = new ilRecurrenceInputGUI($this->lng->txt('cal_recurrences'), 'frequence');
         $rec->setRecurrence($this->rec);
         $this->form->addItem($rec);
         // location
         $where = new ilTextInputGUI($this->lng->txt('cal_where'), 'location');
         $where->setValue($this->app->getLocation());
         $where->setMaxLength(128);
         $where->setSize(32);
         $this->form->addItem($where);
     } else {
         $deadline = new ilDateTimeInputGUI($this->lng->txt('cal_deadline'), 'event[start]');
         $deadline->setDate($this->app->getStart());
         $deadline->setShowTime(false);
         $deadline->setMinuteStepSize(5);
         $this->form->addItem($deadline);
         // completion
         $completion_vals = array();
         for ($i = 0; $i <= 100; $i += 5) {
             $completion_vals[$i] = $i . " %";
         }
         $compl = new ilSelectInputGUI($this->lng->txt('cal_task_completion'), 'completion');
         $compl->setOptions($completion_vals);
         $compl->setValue($this->app->getCompletion());
         $this->form->addItem($compl);
     }
     $desc = new ilTextAreaInputGUI($this->lng->txt('description'), 'description');
     $desc->setValue($this->app->getDescription());
     $desc->setRows(5);
     $this->form->addItem($desc);
     if ($a_as_milestone && $a_mode == "edit" && $resp_info) {
         // users responsible
         $users = $this->app->readResponsibleUsers();
         $resp = new ilNonEditableValueGUI($this->lng->txt('cal_responsible'), $users);
         $delim = "";
         foreach ($users as $r) {
             $value .= $delim . $r["lastname"] . ", " . $r["firstname"] . " [" . $r["login"] . "]";
             $delim = "<br />";
         }
         if (count($users) > 0) {
             $resp->setValue($value);
         } else {
             $resp->setValue("-");
         }
         $this->form->addItem($resp);
     }
     if (ilCalendarSettings::_getInstance()->isUserNotificationEnabled()) {
         $notu = new ilTextWizardInputGUI($this->lng->txt('cal_user_notification'), 'notu');
         $notu->setInfo($this->lng->txt('cal_user_notification_info'));
         $notu->setSize(20);
         $notu->setMaxLength(64);
         $values = array();
         foreach ($this->notification->getRecipients() as $rcp) {
             switch ($rcp['type']) {
                 case ilCalendarUserNotification::TYPE_USER:
                     $values[] = ilObjUser::_lookupLogin($rcp['usr_id']);
                     break;
                 case ilCalendarUserNotification::TYPE_EMAIL:
                     $values[] = $rcp['email'];
                     break;
             }
         }
         if (count($values)) {
             $notu->setValues($values);
         } else {
             $notu->setValues(array(''));
         }
         $this->form->addItem($notu);
     }
     // Notifications
     include_once './Services/Calendar/classes/class.ilCalendarSettings.php';
     if (ilCalendarSettings::_getInstance()->isNotificationEnabled() and count($cats->getNotificationCalendars())) {
         $selected_cal = new ilCalendarCategory($selected_calendar);
         $disabled = true;
         if ($selected_cal->getType() == ilCalendarCategory::TYPE_OBJ) {
             if (ilObject::_lookupType($selected_cal->getObjId()) == 'crs' or ilObject::_lookupType($selected_cal->getObjId()) == 'grp') {
                 $disabled = false;
             }
         }
         $tpl->addJavaScript('./Services/Calendar/js/toggle_notification.js');
         $not = new ilCheckboxInputGUI($this->lng->txt('cal_cg_notification'), 'not');
         $not->setInfo($this->lng->txt('cal_notification_info'));
         $not->setValue(1);
         $not->setChecked($this->app->isNotificationEnabled());
         $not->setDisabled($disabled);
         $this->form->addItem($not);
     }
 }
 public function populateAnswerSpecificFormPart(\ilPropertyFormGUI $form)
 {
     $orderingtype = $this->getOrderingTypeFromPost();
     if (count($this->object->getAnswers()) == 0) {
         $this->object->addAnswer();
     }
     if ($orderingtype == OQ_PICTURES) {
         $answerImageUpload = $this->getAnswerImageFileUploadWizardFormProperty();
         if ($this->uploadAlert !== null) {
             $answerImageUpload->setAlert($this->uploadAlert);
         }
         $form->addItem($answerImageUpload);
     } else {
         if ($orderingtype == OQ_NESTED_TERMS || $orderingtype == OQ_NESTED_PICTURES) {
             require_once 'Modules/TestQuestionPool/classes/class.ilNestedOrderingGUI.php';
             $answers = new ilNestedOrderingGUI($this->lng->txt("answers"), "answers");
             $answers->setOrderingType($orderingtype);
             $answers->setObjAnswersArray($this->object->getAnswers());
             if ($orderingtype == OQ_NESTED_PICTURES) {
                 $answers->setImagePath($this->object->getImagePath());
                 $answers->setImagePathWeb($this->object->getImagePathWeb());
                 $answers->setThumbPrefix($this->object->getThumbPrefix());
             }
             $answers->setInfo($this->lng->txt('ordering_answer_sequence_info'));
             $form->addItem($answers);
         } else {
             $answers = new ilTextWizardInputGUI($this->lng->txt("answers"), "answers");
             $answervalues = array();
             foreach ($this->object->getAnswers() as $index => $answervalue) {
                 $answervalues[$index] = $answervalue->getAnswertext();
             }
             ksort($answervalues);
             $answers->setValues($answervalues);
             $answers->setAllowMove(TRUE);
             $answers->setRequired(TRUE);
             $answers->setInfo($this->lng->txt('ordering_answer_sequence_info'));
             $form->addItem($answers);
         }
     }
     return $form;
 }
 /**
  * Creates an output of the edit form for the question
  *
  * @access public
  */
 public function editQuestion($checkonly = FALSE)
 {
     $save = $this->isSaveCommand();
     $this->getQuestionTemplate();
     include_once "./Services/Form/classes/class.ilPropertyFormGUI.php";
     $form = new ilPropertyFormGUI();
     $form->setFormAction($this->ctrl->getFormAction($this));
     $form->setTitle($this->outQuestionType());
     $form->setMultipart(TRUE);
     $form->setTableWidth("100%");
     $form->setId("asstextquestion");
     // title, author, description, question, working time (assessment mode)
     $this->addBasicQuestionFormProperties($form);
     // maxchars
     $maxchars = new ilNumberInputGUI($this->lng->txt("maxchars"), "maxchars");
     $maxchars->setSize(5);
     if ($this->object->getMaxNumOfChars() > 0) {
         $maxchars->setValue($this->object->getMaxNumOfChars());
     }
     $maxchars->setInfo($this->lng->txt("description_maxchars"));
     $form->addItem($maxchars);
     if (!$this->getSelfAssessmentEditingMode()) {
         if ($this->object->getAnswerCount() == 0) {
             $this->object->addAnswer("", 0, 0, 0);
         }
         $scoringMode = new ilRadioGroupInputGUI($this->lng->txt('essay_scoring_mode'), 'scoring_mode');
         $scoringOptionNone = new ilRadioOption($this->lng->txt('essay_scoring_mode_without_keywords'), 'non', $this->lng->txt('essay_scoring_mode_without_keywords_desc'));
         $scoringOptionAnyKeyword = new ilRadioOption($this->lng->txt('essay_scoring_mode_keyword_relation_any'), 'any', $this->lng->txt('essay_scoring_mode_keyword_relation_any_desc'));
         $scoringOptionAllKeyword = new ilRadioOption($this->lng->txt('essay_scoring_mode_keyword_relation_all'), 'all', $this->lng->txt('essay_scoring_mode_keyword_relation_all_desc'));
         $scoringOptionOneKeyword = new ilRadioOption($this->lng->txt('essay_scoring_mode_keyword_relation_one'), 'one', $this->lng->txt('essay_scoring_mode_keyword_relation_one_desc'));
         $scoringMode->addOption($scoringOptionNone);
         $scoringMode->addOption($scoringOptionAnyKeyword);
         $scoringMode->addOption($scoringOptionAllKeyword);
         $scoringMode->addOption($scoringOptionOneKeyword);
         $scoringMode->setRequired(true);
         $scoringMode->setValue(strlen($this->object->getKeywordRelation()) ? $this->object->getKeywordRelation() : 'non');
         require_once "./Modules/TestQuestionPool/classes/class.ilEssayKeywordWizardInputGUI.php";
         // Without Keywords
         $nonKeywordPoints = new ilNumberInputGUI($this->lng->txt("points"), "non_keyword_points");
         $nonKeywordPoints->setValue($this->object->getPoints());
         $nonKeywordPoints->setRequired(TRUE);
         $nonKeywordPoints->setSize(3);
         $nonKeywordPoints->setMinValue(0.0);
         $nonKeywordPoints->setMinvalueShouldBeGreater(true);
         $scoringOptionNone->addSubItem($nonKeywordPoints);
         // Any Keyword
         $anyKeyword = new ilEssayKeywordWizardInputGUI($this->lng->txt("answers"), "any_keyword");
         $anyKeyword->setRequired(TRUE);
         $anyKeyword->setQuestionObject($this->object);
         $anyKeyword->setSingleline(TRUE);
         $anyKeyword->setValues($this->object->getAnswers());
         $scoringOptionAnyKeyword->addSubItem($anyKeyword);
         // All Keywords
         $allKeyword = new ilTextWizardInputGUI($this->lng->txt("answers"), "all_keyword");
         $allKeyword->setRequired(TRUE);
         //$allKeyword->setQuestionObject($this->object);
         //$allKeyword->setSingleline(TRUE);
         $allKeyword->setValues(self::buildAnswerTextOnlyArray($this->object->getAnswers()));
         $scoringOptionAllKeyword->addSubItem($allKeyword);
         $allKeywordPoints = new ilNumberInputGUI($this->lng->txt("points"), "all_keyword_points");
         $allKeywordPoints->setValue($this->object->getPoints());
         $allKeywordPoints->setRequired(TRUE);
         $allKeywordPoints->setSize(3);
         $allKeywordPoints->setMinValue(0.0);
         $allKeywordPoints->setMinvalueShouldBeGreater(true);
         $scoringOptionAllKeyword->addSubItem($allKeywordPoints);
         // One Keywords
         $oneKeyword = new ilTextWizardInputGUI($this->lng->txt("answers"), "one_keyword");
         $oneKeyword->setRequired(TRUE);
         //$oneKeyword->setQuestionObject($this->object);
         //$oneKeyword->setSingleline(TRUE);
         $oneKeyword->setValues(self::buildAnswerTextOnlyArray($this->object->getAnswers()));
         $scoringOptionOneKeyword->addSubItem($oneKeyword);
         $oneKeywordPoints = new ilNumberInputGUI($this->lng->txt("points"), "one_keyword_points");
         $oneKeywordPoints->setValue($this->object->getPoints());
         $oneKeywordPoints->setRequired(TRUE);
         $oneKeywordPoints->setSize(3);
         $oneKeywordPoints->setMinValue(0.0);
         $oneKeywordPoints->setMinvalueShouldBeGreater(true);
         $scoringOptionOneKeyword->addSubItem($oneKeywordPoints);
         $form->addItem($scoringMode);
     }
     $this->addQuestionFormCommandButtons($form);
     $errors = false;
     if ($save) {
         $form->setValuesByPost();
         $errors = !$form->checkInput();
         $form->setValuesByPost();
         // again, because checkInput now performs the whole stripSlashes handling and we need this if we don't want to have duplication of backslashes
         if ($errors) {
             $checkonly = false;
         }
     }
     if (!$checkonly) {
         $this->tpl->setVariable("QUESTION_DATA", $form->getHTML());
     }
     return $errors;
 }
 /**
  * Init field form
  * 
  * @param string $a_mode 
  * @return ilPropertyFormGUI
  */
 function initForm($a_mode = "create")
 {
     global $ilCtrl, $lng;
     include_once "Services/Membership/classes/class.ilMemberAgreement.php";
     if (ilMemberAgreement::_hasAgreements()) {
         $lng->loadLanguageModule("ps");
         ilUtil::sendInfo($lng->txt("ps_warning_modify"));
     }
     include_once "./Services/Form/classes/class.ilPropertyFormGUI.php";
     $form = new ilPropertyFormGUI();
     $form->setFormAction($ilCtrl->getFormAction($this));
     $name = new ilTextInputGUI($lng->txt("field_name"), "name");
     $name->setRequired(true);
     $form->addItem($name);
     // type
     $radg = new ilRadioGroupInputGUI($lng->txt("field_type"), "field_type");
     $radg->setRequired(true);
     $op1 = new ilRadioOption($lng->txt("udf_type_text"), UDF_TYPE_TEXT);
     $radg->addOption($op1);
     $op2 = new ilRadioOption($lng->txt("udf_type_select"), UDF_TYPE_SELECT);
     $radg->addOption($op2);
     $op3 = new ilRadioOption($lng->txt("udf_type_wysiwyg"), UDF_TYPE_WYSIWYG);
     $radg->addOption($op3);
     $form->addItem($radg);
     // select values
     $se_mu = new ilTextWizardInputGUI($lng->txt("value"), "selvalue");
     $se_mu->setRequired(true);
     $se_mu->setSize(32);
     $se_mu->setMaxLength(128);
     $se_mu->setValues(array(''));
     $op2->addSubItem($se_mu);
     // access
     $acc = new ilCheckboxGroupInputGUI($lng->txt("access"), "access");
     $acc_values = array();
     foreach ($this->getAccessOptions() as $id => $caption) {
         $opt = new ilCheckboxOption($caption, $id);
         $acc->addOption($opt);
         if ($this->field_definition && $this->field_definition[$id]) {
             $acc_values[] = $id;
         }
     }
     $form->addItem($acc);
     if ($a_mode == "create") {
         $radg->setValue(UDF_TYPE_TEXT);
         $form->setTitle($lng->txt('add_new_user_defined_field'));
         $form->addCommandButton("create", $lng->txt("save"));
         $form->addCommandButton("listUserDefinedFields", $lng->txt("cancel"));
     } else {
         $name->setValue($this->field_definition["field_name"]);
         $radg->setValue($this->field_definition["field_type"]);
         $radg->setDisabled(true);
         $acc->setValue($acc_values);
         switch ($this->field_definition["field_type"]) {
             case UDF_TYPE_SELECT:
                 $se_mu->setValue($this->field_definition["field_values"]);
                 $form->setTitle($lng->txt("udf_update_select_field"));
                 break;
             case UDF_TYPE_TEXT:
                 $form->setTitle($lng->txt("udf_update_text_field"));
                 break;
             case UDF_TYPE_WYSIWYG:
                 $form->setTitle($lng->txt("udf_update_wysiwyg_field"));
                 break;
         }
         $form->addCommandButton("update", $lng->txt("save"));
         $form->addCommandButton("listUserDefinedFields", $lng->txt("cancel"));
     }
     return $form;
 }
 /**
  * Init field form
  * 
  * @param string $a_mode 
  * @return ilPropertyFormGUI
  */
 function initForm($a_mode = "create")
 {
     global $ilCtrl, $lng;
     include_once "Services/Membership/classes/class.ilMemberAgreement.php";
     if (ilMemberAgreement::_hasAgreements()) {
         $lng->loadLanguageModule("ps");
         ilUtil::sendInfo($lng->txt("ps_warning_modify"));
     }
     if ($this->field_definition) {
         $perms = $this->permissions->hasPermissions(ilUDFPermissionHelper::CONTEXT_FIELD, $this->field_definition["field_id"], array(array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_PROPERTY, ilUDFPermissionHelper::SUBACTION_FIELD_TITLE), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_PROPERTY, ilUDFPermissionHelper::SUBACTION_FIELD_PROPERTIES), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_PERSONAL), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_REGISTRATION), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_LOCAL), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_COURSES), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_VISIBLE_GROUPS), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_CHANGEABLE_PERSONAL), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_CHANGEABLE_LOCAL), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_REQUIRED), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_EXPORT), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_SEARCHABLE), array(ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS, ilUDFPermissionHelper::SUBACTION_FIELD_ACCESS_CERTIFICATE)));
         $perm_map = self::getAccessPermissions();
     }
     include_once "./Services/Form/classes/class.ilPropertyFormGUI.php";
     $form = new ilPropertyFormGUI();
     $form->setFormAction($ilCtrl->getFormAction($this));
     $name = new ilTextInputGUI($lng->txt("field_name"), "name");
     $name->setRequired(true);
     $form->addItem($name);
     if ($perms && !$perms[ilUDFPermissionHelper::ACTION_FIELD_EDIT_PROPERTY][ilUDFPermissionHelper::SUBACTION_FIELD_TITLE]) {
         $name->setDisabled(true);
     }
     // type
     $radg = new ilRadioGroupInputGUI($lng->txt("field_type"), "field_type");
     $radg->setRequired(true);
     $op1 = new ilRadioOption($lng->txt("udf_type_text"), UDF_TYPE_TEXT);
     $radg->addOption($op1);
     $op2 = new ilRadioOption($lng->txt("udf_type_select"), UDF_TYPE_SELECT);
     $radg->addOption($op2);
     $op3 = new ilRadioOption($lng->txt("udf_type_wysiwyg"), UDF_TYPE_WYSIWYG);
     $radg->addOption($op3);
     $form->addItem($radg);
     // select values
     $se_mu = new ilTextWizardInputGUI($lng->txt("value"), "selvalue");
     $se_mu->setRequired(true);
     $se_mu->setSize(32);
     $se_mu->setMaxLength(128);
     $se_mu->setValues(array(''));
     $op2->addSubItem($se_mu);
     if ($perms && !$perms[ilUDFPermissionHelper::ACTION_FIELD_EDIT_PROPERTY][ilUDFPermissionHelper::SUBACTION_FIELD_PROPERTIES]) {
         $se_mu->setDisabled(true);
         $se_mu->setRequired(false);
     }
     // access
     $acc = new ilCheckboxGroupInputGUI($lng->txt("access"), "access");
     $acc_values = array();
     foreach ($this->getAccessOptions() as $id => $caption) {
         $opt = new ilCheckboxOption($caption, $id);
         $acc->addOption($opt);
         if ($this->field_definition && $this->field_definition[$id]) {
             $acc_values[] = $id;
         }
         if ($perms && !$perms[ilUDFPermissionHelper::ACTION_FIELD_EDIT_ACCESS][$perm_map[$id]]) {
             $opt->setDisabled(true);
         }
     }
     $form->addItem($acc);
     if ($a_mode == "create") {
         $radg->setValue(UDF_TYPE_TEXT);
         $form->setTitle($lng->txt('add_new_user_defined_field'));
         $form->addCommandButton("create", $lng->txt("save"));
         $form->addCommandButton("listUserDefinedFields", $lng->txt("cancel"));
     } else {
         $name->setValue($this->field_definition["field_name"]);
         $radg->setValue($this->field_definition["field_type"]);
         $radg->setDisabled(true);
         $acc->setValue($acc_values);
         switch ($this->field_definition["field_type"]) {
             case UDF_TYPE_SELECT:
                 $se_mu->setValue($this->field_definition["field_values"]);
                 $form->setTitle($lng->txt("udf_update_select_field"));
                 break;
             case UDF_TYPE_TEXT:
                 $form->setTitle($lng->txt("udf_update_text_field"));
                 break;
             case UDF_TYPE_WYSIWYG:
                 $form->setTitle($lng->txt("udf_update_wysiwyg_field"));
                 break;
         }
         $form->addCommandButton("update", $lng->txt("save"));
         $form->addCommandButton("listUserDefinedFields", $lng->txt("cancel"));
     }
     return $form;
 }
 public function populateAnswerSpecificFormPart(\ilPropertyFormGUI $form)
 {
     $scoringMode = new ilRadioGroupInputGUI($this->lng->txt('essay_scoring_mode'), 'scoring_mode');
     $scoringOptionNone = new ilRadioOption($this->lng->txt('essay_scoring_mode_without_keywords'), 'non', $this->lng->txt('essay_scoring_mode_without_keywords_desc'));
     $scoringOptionAnyKeyword = new ilRadioOption($this->lng->txt('essay_scoring_mode_keyword_relation_any'), 'any', $this->lng->txt('essay_scoring_mode_keyword_relation_any_desc'));
     $scoringOptionAllKeyword = new ilRadioOption($this->lng->txt('essay_scoring_mode_keyword_relation_all'), 'all', $this->lng->txt('essay_scoring_mode_keyword_relation_all_desc'));
     $scoringOptionOneKeyword = new ilRadioOption($this->lng->txt('essay_scoring_mode_keyword_relation_one'), 'one', $this->lng->txt('essay_scoring_mode_keyword_relation_one_desc'));
     $scoringMode->addOption($scoringOptionNone);
     $scoringMode->addOption($scoringOptionAnyKeyword);
     $scoringMode->addOption($scoringOptionAllKeyword);
     $scoringMode->addOption($scoringOptionOneKeyword);
     $scoringMode->setRequired(true);
     $scoringMode->setValue(strlen($this->object->getKeywordRelation()) ? $this->object->getKeywordRelation() : 'non');
     if ($this->object->getAnswerCount() == 0) {
         $this->object->addAnswer("", 1, 0, 0);
     }
     require_once "./Modules/TestQuestionPool/classes/class.ilEssayKeywordWizardInputGUI.php";
     // Without Keywords
     $nonKeywordPoints = new ilNumberInputGUI($this->lng->txt("points"), "non_keyword_points");
     $nonKeywordPoints->allowDecimals(true);
     $nonKeywordPoints->setValue($this->object->getPoints());
     $nonKeywordPoints->setRequired(TRUE);
     $nonKeywordPoints->setSize(3);
     $nonKeywordPoints->setMinValue(0.0);
     $nonKeywordPoints->setMinvalueShouldBeGreater(true);
     $scoringOptionNone->addSubItem($nonKeywordPoints);
     // Any Keyword
     $anyKeyword = new ilEssayKeywordWizardInputGUI($this->lng->txt("answers"), "any_keyword");
     $anyKeyword->setRequired(TRUE);
     $anyKeyword->setQuestionObject($this->object);
     $anyKeyword->setSingleline(TRUE);
     $anyKeyword->setValues($this->object->getAnswers());
     $scoringOptionAnyKeyword->addSubItem($anyKeyword);
     // All Keywords
     $allKeyword = new ilTextWizardInputGUI($this->lng->txt("answers"), "all_keyword");
     $allKeyword->setRequired(TRUE);
     //$allKeyword->setQuestionObject($this->object);
     //$allKeyword->setSingleline(TRUE);
     $allKeyword->setValues(self::buildAnswerTextOnlyArray($this->object->getAnswers()));
     $scoringOptionAllKeyword->addSubItem($allKeyword);
     $allKeywordPoints = new ilNumberInputGUI($this->lng->txt("points"), "all_keyword_points");
     $allKeywordPoints->allowDecimals(true);
     $allKeywordPoints->setValue($this->object->getPoints());
     $allKeywordPoints->setRequired(TRUE);
     $allKeywordPoints->setSize(3);
     $allKeywordPoints->setMinValue(0.0);
     $allKeywordPoints->setMinvalueShouldBeGreater(true);
     $scoringOptionAllKeyword->addSubItem($allKeywordPoints);
     // One Keywords
     $oneKeyword = new ilTextWizardInputGUI($this->lng->txt("answers"), "one_keyword");
     $oneKeyword->setRequired(TRUE);
     //$oneKeyword->setQuestionObject($this->object);
     //$oneKeyword->setSingleline(TRUE);
     $oneKeyword->setValues(self::buildAnswerTextOnlyArray($this->object->getAnswers()));
     $scoringOptionOneKeyword->addSubItem($oneKeyword);
     $oneKeywordPoints = new ilNumberInputGUI($this->lng->txt("points"), "one_keyword_points");
     $oneKeywordPoints->allowDecimals(true);
     $oneKeywordPoints->setValue($this->object->getPoints());
     $oneKeywordPoints->setRequired(TRUE);
     $oneKeywordPoints->setSize(3);
     $oneKeywordPoints->setMinValue(0.0);
     $oneKeywordPoints->setMinvalueShouldBeGreater(true);
     $scoringOptionOneKeyword->addSubItem($oneKeywordPoints);
     $form->addItem($scoringMode);
 }
 /**
  * Show objective creation form
  */
 protected function initSimpleObjectiveForm()
 {
     include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
     $form = new ilPropertyFormGUI();
     $form->setTitle($this->lng->txt('crs_loc_form_create_objectives'));
     $form->setFormAction($this->ctrl->getFormAction($this));
     $txt = new ilTextWizardInputGUI($this->lng->txt('crs_objectives'), 'objectives');
     $txt->setValues(array(0 => ''));
     $txt->setRequired(true);
     $form->addItem($txt);
     $form->addCommandButton('saveObjectiveCreation', $this->lng->txt('save'));
     return $form;
 }
 /**
  * Init/create property form for fields
  * @return 
  */
 protected function initFieldForm($a_mode)
 {
     if ($this->form instanceof ilPropertyFormGUI) {
         return true;
     }
     include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
     $this->form = new ilPropertyFormGUI();
     switch ($a_mode) {
         case self::MODE_CREATE:
             $this->form->setFormAction($this->ctrl->getFormAction($this));
             $this->form->setTitle($this->lng->txt('ps_cdf_add_field'));
             $this->form->addCommandButton('saveField', $this->lng->txt('save'));
             $this->form->addCommandButton('listFields', $this->lng->txt('cancel'));
             break;
         case self::MODE_UPDATE:
             $this->ctrl->setParameter($this, 'field_id', (int) $_REQUEST['field_id']);
             $this->form->setFormAction($this->ctrl->getFormAction($this));
             $this->form->setTitle($this->lng->txt('ps_cdf_edit_field'));
             $this->form->addCommandButton('updateField', $this->lng->txt('save'));
             $this->form->addCommandButton('listFields', $this->lng->txt('cancel'));
             break;
     }
     // Name
     $na = new ilTextInputGUI($this->lng->txt('ps_cdf_name'), 'na');
     $na->setSize(32);
     $na->setMaxLength(255);
     $na->setRequired(true);
     $this->form->addItem($na);
     // Type
     $ty = new ilRadioGroupInputGUI($this->lng->txt('ps_field_type'), 'ty');
     $ty->setRequired(true);
     $this->form->addItem($ty);
     //		Text type
     $ty_te = new ilRadioOption($this->lng->txt('ps_type_txt_long'), IL_CDF_TYPE_TEXT);
     $ty->addOption($ty_te);
     //		Select Type
     $ty_se = new ilRadioOption($this->lng->txt('ps_type_select_long'), IL_CDF_TYPE_SELECT);
     $ty->addOption($ty_se);
     //			Select Type Values
     $ty_se_mu = new ilTextWizardInputGUI($this->lng->txt('ps_cdf_value'), 'va');
     $ty_se_mu->setRequired(true);
     $ty_se_mu->setSize(32);
     $ty_se_mu->setMaxLength(128);
     $ty_se->addSubItem($ty_se_mu);
     // Required
     $re = new ilCheckboxInputGUI($this->lng->txt('ps_cdf_required'), 're');
     $re->setValue(1);
     $this->form->addItem($re);
 }