mirror of
https://github.com/moodle/moodle.git
synced 2025-08-07 18:06:51 +02:00

The download form usas autosubmit to start downloading the content. This breaks the JS modules loading because the page loading is cancelled when the form is submitted. To prevent this from happen the download form now has a hidden iframe to execute the download action without affecting the rest of the page.
45 lines
1.6 KiB
PHP
45 lines
1.6 KiB
PHP
<?php
|
|
|
|
// this script is a slightly more user friendly way to 'send' the file to them
|
|
// (using portfolio/file.php) but still give them the 'return to where you were' link
|
|
// to go back to their assignment, or whatever
|
|
|
|
require(__DIR__.'/../../config.php');
|
|
|
|
if (empty($CFG->enableportfolios)) {
|
|
print_error('disabled', 'portfolio');
|
|
}
|
|
|
|
require_once($CFG->libdir.'/portfoliolib.php');
|
|
require_once($CFG->libdir.'/portfolio/exporter.php');
|
|
|
|
$id = required_param('id', PARAM_INT);
|
|
|
|
$PAGE->set_url('/portfolio/download/file.php', array('id' => $id));
|
|
|
|
$exporter = portfolio_exporter::rewaken_object($id);
|
|
portfolio_export_pagesetup($PAGE, $exporter->get('caller'));
|
|
$exporter->verify_rewaken();
|
|
|
|
$exporter->print_header(get_string('downloading', 'portfolio_download'), false);
|
|
$returnurl = $exporter->get('caller')->get_return_url();
|
|
echo $OUTPUT->notification('<a href="' . $returnurl . '">' . get_string('returntowhereyouwere', 'portfolio') . '</a><br />');
|
|
|
|
|
|
// if they don't have javascript, they can submit the form here to get the file.
|
|
// if they do, it does it nicely for them.
|
|
echo '<div id="redirect">
|
|
<form action="' . $exporter->get('instance')->get_base_file_url() . '" method="post" id="redirectform" target="download-iframe">
|
|
<input type="submit" value="' . get_string('downloadfile', 'portfolio_download') . '" />
|
|
</form>
|
|
<iframe class="d-none" name="download-iframe" src=""></iframe>
|
|
</div>
|
|
';
|
|
|
|
$PAGE->requires->js_amd_inline("
|
|
require(['jquery'], function($) {
|
|
$('#redirectform').submit(function() {
|
|
$('#redirect').addClass('hide');
|
|
}).submit();
|
|
});");
|
|
echo $OUTPUT->footer();
|