<?php
// This file is part of
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

defined('MOODLE_INTERNAL') || die();

require_once("$CFG->dirroot/course/moodleform_mod.php");
require_once("$CFG->libdir/formslib.php");
require_once("submission_form_functions.php");

class mod_gradeimporter_submission_form extends moodleform {

    public function definition() {
        global $CFG, $DB;

        $mform = $this->_form;

        // Custom data
        $submission = $this->_customdata['submission']; // Load fields data
        $filemanageroptions = $this->_customdata['filemanageroptions'];
        $gradeimporterid = $this->_customdata['gradeimporterid'];
        $cmid = $this->_customdata['cmid'];
        // ----------------------------------------------------------------
        // General information

        // Header
        $mform->addElement('header',  'newsub',  get_string('newsubmission', 'gradeimporter'));

        // Submission name field
        $mform->addElement('text', 'name', get_string('submissionname', 'gradeimporter'));
        $mform->setType('name', PARAM_TEXT);
        $mform->addRule('name', null, 'required', null, 'client');

        $mform->addElement('editor', 'description', get_string('description'));
        $mform->setType('description', PARAM_TEXT);

        $mform->addElement('filemanager', 'submissionfiles_filemanager', get_string('submissionfiles', 'gradeimporter'),
                            null, $filemanageroptions);
        $mform->addHelpButton('submissionfiles_filemanager', 'submissionfiles', 'gradeimporter');

        // Add button to open new subtypeform
        $subtypeformurl = new moodle_url("/mod/gradeimporter/forms/submissiontype/submissiontype.php",
                                            array('cmid' => $cmid, 'id' => $gradeimporterid)
                                        );
        $newsubtypebutton = "<div class=\"col-md-9 form-inline align-items-start felement\">
                                <button class=\"btn btn-primary\" onclick=\"window.open('$subtypeformurl','_self')\">
                                    New type
                                </button>
                            </div>";
        $mform->addElement('html', $newsubtypebutton);

        // To edit
        $subtypes = get_types_array($gradeimporterid);
        var_dump ($subtypes);
        if ($subtypes) {
            $selectvalues = array();
            foreach ($subtypes as $id => $type) {
                $selectvalues[$id] = $type->name;
            }
        } else {
            $selectvalues = array('create new type first');
        }
        $mform->addElement('select', 'type', get_string('submissiontype', 'gradeimporter'), $selectvalues);

        $mform->addElement('selectyesno', 'visibility',  get_string('visibility', 'gradeimporter'));
        $mform->setDefault('visibility', array('value' => 1));
        $mform->addHelpButton('visibility', 'visibility', 'gradeimporter');

        $mform->addElement('selectyesno', 'gradebook',  get_string('gradebook', 'gradeimporter'));
        $mform->setDefault('gradebook', array('value' => 0));
        $mform->addHelpButton('gradebook', 'gradebook', 'gradeimporter');

        // -----------------------------
        // Hidden fields
        $mform->addElement('hidden', 'id');
        $mform->setType('id', PARAM_INT);
        $mform->addElement('hidden', 'cmid');
        $mform->setType('cmid', PARAM_INT);

        // ------------------------------
        // Save and cancel buttons
        $this->add_action_buttons();

        // ------------------------------
        // Sets preloaded data to fields
        $this->set_data($submission);
    }

}