if ($ADMIN->fulltree) {
    require_once $CFG->dirroot . '/mod/workshopplus/locallib.php';
    $grades = workshopplus::available_maxgrades_list();
    $settings->add(new admin_setting_configselect('workshopplus/grade', get_string('submissiongrade', 'workshopplus'), get_string('configgrade', 'workshopplus'), 80, $grades));
    $settings->add(new admin_setting_configselect('workshopplus/gradinggrade', get_string('gradinggrade', 'workshopplus'), get_string('configgradinggrade', 'workshopplus'), 20, $grades));
    $options = array();
    for ($i = 5; $i >= 0; $i--) {
        $options[$i] = $i;
    }
    $settings->add(new admin_setting_configselect('workshopplus/gradedecimals', get_string('gradedecimals', 'workshopplus'), get_string('configgradedecimals', 'workshopplus'), 0, $options));
    if (isset($CFG->maxbytes)) {
        $maxbytes = get_config('workshopplus', 'maxbytes');
        $options = get_max_upload_sizes($CFG->maxbytes, 0, 0, $maxbytes);
        $settings->add(new admin_setting_configselect('workshopplus/maxbytes', get_string('maxbytes', 'workshopplus'), get_string('configmaxbytes', 'workshopplus'), 0, $options));
    }
    $settings->add(new admin_setting_configselect('workshopplus/strategy', get_string('strategy', 'workshopplus'), get_string('configstrategy', 'workshopplus'), 'accumulative', workshopplus::available_strategies_list()));
    $options = workshopplus::available_example_modes_list();
    $settings->add(new admin_setting_configselect('workshopplus/examplesmode', get_string('examplesmode', 'workshopplus'), get_string('configexamplesmode', 'workshopplus'), workshopplus::EXAMPLES_VOLUNTARY, $options));
    // include the settings of allocation subplugins
    $allocators = core_component::get_plugin_list('workshopplusallocation');
    foreach ($allocators as $allocator => $path) {
        if (file_exists($settingsfile = $path . '/settings.php')) {
            $settings->add(new admin_setting_heading('workshopplusallocationsetting' . $allocator, get_string('allocation', 'workshopplus') . ' - ' . get_string('pluginname', 'workshopplusallocation_' . $allocator), ''));
            include $settingsfile;
        }
    }
    // include the settings of grading strategy subplugins
    $strategies = core_component::get_plugin_list('workshopplusform');
    foreach ($strategies as $strategy => $path) {
        if (file_exists($settingsfile = $path . '/settings.php')) {
            $settings->add(new admin_setting_heading('workshopplusformsetting' . $strategy, get_string('strategy', 'workshopplus') . ' - ' . get_string('pluginname', 'workshopplusform_' . $strategy), ''));
 /**
  * Defines the workshopplus instance configuration form
  *
  * @return void
  */
 public function definition()
 {
     global $CFG;
     $workshopplusconfig = get_config('workshopplus');
     $mform = $this->_form;
     // General --------------------------------------------------------------------
     $mform->addElement('header', 'general', get_string('general', 'form'));
     // workshopplus name
     $label = get_string('workshopplusname', 'workshopplus');
     $mform->addElement('text', 'name', $label, array('size' => '64'));
     if (!empty($CFG->formatstringstriptags)) {
         $mform->setType('name', PARAM_TEXT);
     } else {
         $mform->setType('name', PARAM_CLEANHTML);
     }
     $mform->addRule('name', null, 'required', null, 'client');
     $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
     // Introduction
     $this->add_intro_editor(false, get_string('introduction', 'workshopplus'));
     // Grading settings -----------------------------------------------------------
     $mform->addElement('header', 'gradingsettings', get_string('gradingsettings', 'workshopplus'));
     $mform->setExpanded('gradingsettings');
     $label = get_string('strategy', 'workshopplus');
     $mform->addElement('select', 'strategy', $label, workshopplus::available_strategies_list());
     $mform->setDefault('strategy', $workshopplusconfig->strategy);
     $mform->addHelpButton('strategy', 'strategy', 'workshopplus');
     $grades = workshopplus::available_maxgrades_list();
     $gradecategories = grade_get_categories_menu($this->course->id);
     $label = get_string('submissiongrade', 'workshopplus');
     $mform->addGroup(array($mform->createElement('select', 'grade', '', $grades), $mform->createElement('select', 'gradecategory', '', $gradecategories)), 'submissiongradegroup', $label, ' ', false);
     $mform->setDefault('grade', $workshopplusconfig->grade);
     $mform->addHelpButton('submissiongradegroup', 'submissiongrade', 'workshopplus');
     $label = get_string('gradinggrade', 'workshopplus');
     $mform->addGroup(array($mform->createElement('select', 'gradinggrade', '', $grades), $mform->createElement('select', 'gradinggradecategory', '', $gradecategories)), 'gradinggradegroup', $label, ' ', false);
     $mform->setDefault('gradinggrade', $workshopplusconfig->gradinggrade);
     $mform->addHelpButton('gradinggradegroup', 'gradinggrade', 'workshopplus');
     $options = array();
     for ($i = 5; $i >= 0; $i--) {
         $options[$i] = $i;
     }
     $label = get_string('gradedecimals', 'workshopplus');
     $mform->addElement('select', 'gradedecimals', $label, $options);
     $mform->setDefault('gradedecimals', $workshopplusconfig->gradedecimals);
     // Submission settings --------------------------------------------------------
     $mform->addElement('header', 'submissionsettings', get_string('submissionsettings', 'workshopplus'));
     $label = get_string('instructauthors', 'workshopplus');
     $mform->addElement('editor', 'instructauthorseditor', $label, null, workshopplus::instruction_editors_options($this->context));
     $options = array();
     for ($i = 7; $i >= 0; $i--) {
         $options[$i] = $i;
     }
     $label = get_string('nattachments', 'workshopplus');
     $mform->addElement('select', 'nattachments', $label, $options);
     $mform->setDefault('nattachments', 1);
     $options = get_max_upload_sizes($CFG->maxbytes, $this->course->maxbytes, 0, $workshopplusconfig->maxbytes);
     $mform->addElement('select', 'maxbytes', get_string('maxbytes', 'workshopplus'), $options);
     $mform->setDefault('maxbytes', $workshopplusconfig->maxbytes);
     $label = get_string('latesubmissions', 'workshopplus');
     $text = get_string('latesubmissions_desc', 'workshopplus');
     $mform->addElement('checkbox', 'latesubmissions', $label, $text);
     $mform->addHelpButton('latesubmissions', 'latesubmissions', 'workshopplus');
     // Assessment settings --------------------------------------------------------
     $mform->addElement('header', 'assessmentsettings', get_string('assessmentsettings', 'workshopplus'));
     $label = get_string('instructreviewers', 'workshopplus');
     $mform->addElement('editor', 'instructreviewerseditor', $label, null, workshopplus::instruction_editors_options($this->context));
     $label = get_string('useselfassessment', 'workshopplus');
     $text = get_string('useselfassessment_desc', 'workshopplus');
     $mform->addElement('checkbox', 'useselfassessment', $label, $text);
     $mform->addHelpButton('useselfassessment', 'useselfassessment', 'workshopplus');
     // Feedback -------------------------------------------------------------------
     $mform->addElement('header', 'feedbacksettings', get_string('feedbacksettings', 'workshopplus'));
     $mform->addElement('select', 'overallfeedbackmode', get_string('overallfeedbackmode', 'mod_workshopplus'), array(0 => get_string('overallfeedbackmode_0', 'mod_workshopplus'), 1 => get_string('overallfeedbackmode_1', 'mod_workshopplus'), 2 => get_string('overallfeedbackmode_2', 'mod_workshopplus')));
     $mform->addHelpButton('overallfeedbackmode', 'overallfeedbackmode', 'mod_workshopplus');
     $mform->setDefault('overallfeedbackmode', 1);
     $options = array();
     for ($i = 7; $i >= 0; $i--) {
         $options[$i] = $i;
     }
     $mform->addElement('select', 'overallfeedbackfiles', get_string('overallfeedbackfiles', 'workshopplus'), $options);
     $mform->setDefault('overallfeedbackfiles', 0);
     $mform->disabledIf('overallfeedbackfiles', 'overallfeedbackmode', 'eq', 0);
     $options = get_max_upload_sizes($CFG->maxbytes, $this->course->maxbytes);
     $mform->addElement('select', 'overallfeedbackmaxbytes', get_string('overallfeedbackmaxbytes', 'workshopplus'), $options);
     $mform->setDefault('overallfeedbackmaxbytes', $workshopplusconfig->maxbytes);
     $mform->disabledIf('overallfeedbackmaxbytes', 'overallfeedbackmode', 'eq', 0);
     $mform->disabledIf('overallfeedbackmaxbytes', 'overallfeedbackfiles', 'eq', 0);
     $label = get_string('conclusion', 'workshopplus');
     $mform->addElement('editor', 'conclusioneditor', $label, null, workshopplus::instruction_editors_options($this->context));
     $mform->addHelpButton('conclusioneditor', 'conclusion', 'workshopplus');
     // Example submissions --------------------------------------------------------
     $mform->addElement('header', 'examplesubmissionssettings', get_string('examplesubmissions', 'workshopplus'));
     $label = get_string('useexamples', 'workshopplus');
     $text = get_string('useexamples_desc', 'workshopplus');
     $mform->addElement('checkbox', 'useexamples', $label, $text);
     $mform->addHelpButton('useexamples', 'useexamples', 'workshopplus');
     $label = get_string('examplesmode', 'workshopplus');
     $options = workshopplus::available_example_modes_list();
     $mform->addElement('select', 'examplesmode', $label, $options);
     $mform->setDefault('examplesmode', $workshopplusconfig->examplesmode);
     $mform->disabledIf('examplesmode', 'useexamples');
     // Availability ---------------------------------------------------------------
     $mform->addElement('header', 'accesscontrol', get_string('availability', 'core'));
     $label = get_string('submissionstart', 'workshopplus');
     $mform->addElement('date_time_selector', 'submissionstart', $label, array('optional' => true));
     $label = get_string('submissionend', 'workshopplus');
     $mform->addElement('date_time_selector', 'submissionend', $label, array('optional' => true));
     $label = get_string('submissionendswitch', 'mod_workshopplus');
     $mform->addElement('checkbox', 'phaseswitchassessment', $label);
     $mform->disabledIf('phaseswitchassessment', 'submissionend[enabled]');
     $mform->addHelpButton('phaseswitchassessment', 'submissionendswitch', 'mod_workshopplus');
     $label = get_string('assessmentstart', 'workshopplus');
     $mform->addElement('date_time_selector', 'assessmentstart', $label, array('optional' => true));
     $label = get_string('assessmentend', 'workshopplus');
     $mform->addElement('date_time_selector', 'assessmentend', $label, array('optional' => true));
     $coursecontext = context_course::instance($this->course->id);
     plagiarism_get_form_elements_module($mform, $coursecontext, 'mod_workshopplus');
     // Common module settings, Restrict availability, Activity completion etc. ----
     $features = array('groups' => true, 'groupings' => true, 'groupmembersonly' => true, 'outcomes' => true, 'gradecat' => false, 'idnumber' => false);
     $this->standard_coursemodule_elements();
     // Standard buttons, common to all modules ------------------------------------
     $this->add_action_buttons();
 }