iMath) - Computer Science Dep. of IME-USP (Brazil) * * License * - http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ // Moodle core defines constant MOODLE_INTERNAL which shall be used to make sure that the script is included and not called directly. if (!defined('MOODLE_INTERNAL')) { die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page } require_once ($CFG->dirroot . '/course/moodleform_mod.php'); /// This class create form based moodleform. // @see moodleform_mod class mod_iassign_mod_form extends moodleform_mod { function definition () { global $CFG, $DB; $mform = & $this->_form; $course_modules_id = optional_param('update', 0, PARAM_INT); //------------------------------------------------------------------------------- /// Adding the "title_type_iassign" fieldset, where all the common settings are showed $mform->addElement('header', 'general', get_string('general', 'iassign')); /// Adding the standard "name" field $mform->addElement('text', 'name', get_string('iassigntitle', 'iassign'), array('size' => '55')); if (!empty($CFG->formatstringstriptags)) { $mform->setType('name', PARAM_TEXT); } else { $mform->setType('name', PARAM_CLEANHTML); } $mform->addRule('name', null, 'required', null, 'client'); $this->standard_intro_elements(get_string('description', 'iassign')); $mform->addElement('selectyesno', 'activity_group', get_string('activity_group', 'iassign')); $mform->setDefault('activity_group', 1); $mform->addHelpButton('activity_group', 'helpactivitygroup', 'iassign'); // general fields $mform->addElement('header', 'general_fields', get_string('general_fields', 'iassign')); $timeavailable_group = array(); $timeavailable_group[] = & $mform->createElement('date_time_selector', 'timeavailable', ''); $mform->setDefault('timeavailable', time()); if ($course_modules_id != 0) $timeavailable_group[] = & $mform->createElement('advcheckbox', 'timeavailable_enabled', '', get_string('enable')); $mform->addGroup($timeavailable_group, 'timeavailable_group', get_string('availabledate', 'iassign'), ' ', false); if ($course_modules_id != 0) $mform->disabledIf('timeavailable_group', 'timeavailable_enabled'); $timedue_group = array(); $timedue_group[] = & $mform->createElement('date_time_selector', 'timedue', ''); $mform->setDefault('timedue', time() + 7 * 24 * 3600); if ($course_modules_id != 0) $timedue_group[] = & $mform->createElement('advcheckbox', 'timedue_enabled', '', get_string('enable')); $mform->addGroup($timedue_group, 'timedue_group', get_string('duedate', 'iassign'), ' ', false); if ($course_modules_id != 0) $mform->disabledIf('timedue_group', 'timedue_enabled'); $preventlate_group = array(); $preventlate_group[] = & $mform->createElement('selectyesno', 'preventlate', ''); $mform->setDefault('preventlate', 0); if ($course_modules_id != 0) $preventlate_group[] = & $mform->createElement('advcheckbox', 'preventlate_enabled', '', get_string('enable')); $mform->addGroup($preventlate_group, 'preventlate_group', get_string('preventlate', 'iassign'), ' ', false); if ($course_modules_id != 0) $mform->disabledIf('preventlate_group', 'preventlate_enabled'); $mform->addHelpButton('preventlate_group', 'helppreventlate', 'iassign'); $test_group = array(); $test_group[] = & $mform->createElement('selectyesno', 'test', ''); $mform->setDefault('test', 0); if ($course_modules_id != 0) $test_group[] = & $mform->createElement('advcheckbox', 'test_enabled', '', get_string('enable')); $mform->addGroup($test_group, 'test_group', get_string('permission_test', 'iassign'), ' ', false); if ($course_modules_id != 0) $mform->disabledIf('test_group', 'test_enabled'); $mform->addHelpButton('test_group', 'helptest', 'iassign'); $mform->addElement('modgrade', 'grade', get_string('grade', 'iassign')); $max_experiment_options = array(0 => get_string('ilimit', 'iassign')); for ($i = 1; $i <= 20; $i++) $max_experiment_options[$i] = $i; $max_experiment_group = array(); $max_experiment_group[] = & $mform->createElement('select', 'max_experiment', '', $max_experiment_options); $mform->setDefault('max_experiment', 0); if ($course_modules_id != 0) $max_experiment_group[] = & $mform->createElement('advcheckbox', 'max_experiment_enabled', '', get_string('enable')); $mform->addGroup($max_experiment_group, 'max_experiment_group', get_string('experiment', 'iassign'), ' ', false); if ($course_modules_id != 0) $mform->disabledIf('max_experiment_group', 'max_experiment_enabled'); $mform->addHelpButton('max_experiment_group', 'helpexperiment', 'iassign'); //------------------------------------------------------------------------------- // Hidden fields $mform->addElement('hidden', 'id'); $mform->setType('id', PARAM_TEXT); if ($course_modules_id != 0) { $course_modules = $DB->get_record("course_modules", array('id' => $course_modules_id)); $iassign_statement = $DB->get_records("iassign_statement", array('iassignid' => $course_modules->instance)); if ($iassign_statement) { $mform->addElement('header', 'header_general_fields_apply', get_string('general_fields_apply', 'iassign')); $mform->addHelpButton('header_general_fields_apply', 'general_fields_apply', 'iassign'); $this->add_checkbox_controller('atividades'); foreach ($iassign_statement as $iassign) { $tmp = 'iassign_statement[' . $iassign->id . ']'; $mform->addElement('advcheckbox', $tmp, $iassign->name, null, array('group' => 'atividades')); } } } $this->standard_coursemodule_elements(); $this->add_action_buttons(); } // function definition() function data_preprocessing (&$default_values) { parent::data_preprocessing($default_values); $mform = & $this->_form; if (!$mform->isSubmitted() && array_key_exists('name', $default_values)) { //TODO Remove when updating all the iassign that are tag <ia_uc> $ia_uc = explode('<ia_uc>', $default_values['name']); $default_values['name'] = $ia_uc[0]; } } function definition_after_data() { global $DB; $mform = & $this->_form; $data = $mform->exportValues(); if ($mform->isSubmitted() && array_key_exists('iassign_statement', $data)) { $iassign_statements = $data['iassign_statement']; foreach ($iassign_statements as $key => $value) { if ($value == 1) { $updateentry = new stdClass(); $updateentry->id = $key; $updateentry->timemodified = time(); if (isset($data['grade_enabled']) && $data['grade_enabled'] == 1) $updateentry->grade = $data['grade']; if (isset($data['timedue_enabled']) && $data['timedue_enabled'] == 1) $updateentry->timedue = $data['timedue']; if (isset($data['timeavailable_enabled']) && $data['timeavailable_enabled'] == 1) $updateentry->timeavailable = $data['timeavailable']; if (isset($data['preventlate_enabled']) && $data['preventlate_enabled'] == 1) $updateentry->preventlate = $data['preventlate']; if (isset($data['test_enabled']) && $data['test_enabled'] == 1) $updateentry->test = $data['test']; if (isset($data['max_experiment_enabled']) && $data['max_experiment_enabled'] == 1) $updateentry->max_experiment = $data['max_experiment']; if (!$DB->update_record("iassign_statement", $updateentry)) print_error('error_update', 'iassign'); } } } } } // class mod_iassign_mod_form extends moodleform_mod