/** * Displays the input control for when the student should upload a single file. * @param question_attempt $qa the question attempt to display. * @param int $numallowed the maximum number of attachments allowed. -1 = unlimited. * @param question_display_options $options controls what should and should * not be displayed. Used to get the context. */ public function files_input(question_attempt $qa, $numallowed, question_display_options $options) { global $CFG; require_once $CFG->dirroot . '/lib/form/filemanager.php'; $pickeroptions = new stdClass(); $pickeroptions->mainfile = null; $pickeroptions->maxfiles = $numallowed; $pickeroptions->itemid = $qa->prepare_response_files_draft_itemid('attachments', $options->context->id); $pickeroptions->context = $options->context; $pickeroptions->itemid = $qa->prepare_response_files_draft_itemid('attachments', $options->context->id); return form_filemanager_render($pickeroptions) . html_writer::empty_tag('input', array('type' => 'hidden', 'name' => $qa->get_qt_field_name('attachments'), 'value' => $pickeroptions->itemid)); }
/** * Returns HTML for filemanager form element. * * @return string */ function toHtml() { global $CFG, $USER, $COURSE, $PAGE, $OUTPUT; require_once "{$CFG->dirroot}/repository/lib.php"; // security - never ever allow guest/not logged in user to upload anything or use this element! if (isguestuser() or !isloggedin()) { print_error('noguest'); } if ($this->_flagFrozen) { return $this->getFrozenHtml(); } $id = $this->_attributes['id']; $elname = $this->_attributes['name']; $subdirs = $this->_options['subdirs']; $maxbytes = $this->_options['maxbytes']; $draftitemid = $this->getValue(); $accepted_types = $this->_options['accepted_types']; if (empty($draftitemid)) { // no existing area info provided - let's use fresh new draft area require_once "{$CFG->libdir}/filelib.php"; $this->setValue(file_get_unused_draft_itemid()); $draftitemid = $this->getValue(); } $client_id = uniqid(); // filemanager options $options = new stdClass(); $options->mainfile = $this->_options['mainfile']; $options->maxbytes = $this->_options['maxbytes']; $options->maxfiles = $this->getMaxfiles(); $options->client_id = $client_id; $options->itemid = $draftitemid; $options->subdirs = $this->_options['subdirs']; $options->target = $id; $options->accepted_types = $accepted_types; $options->return_types = FILE_INTERNAL; $options->context = $PAGE->context; $html = $this->_getTabs(); $html .= form_filemanager_render($options); $html .= '<input value="' . $draftitemid . '" name="' . $elname . '" type="hidden" />'; // label element needs 'for' attribute work $html .= '<input value="" id="id_' . $elname . '" type="hidden" />'; return $html; }