MDL-34182 Repositories: Check for and warn on invalid output in the file picker
This commit is contained in:
+10
-14
@@ -582,27 +582,23 @@ M.core_filepicker.init = function(Y, options) {
|
||||
method: 'POST',
|
||||
on: {
|
||||
complete: function(id,o,p) {
|
||||
if (!o) {
|
||||
// TODO
|
||||
alert('IO FATAL');
|
||||
return;
|
||||
}
|
||||
var data = null;
|
||||
try {
|
||||
data = Y.JSON.parse(o.responseText);
|
||||
} catch(e) {
|
||||
scope.print_msg(M.str.repository.invalidjson, 'error');
|
||||
scope.display_error(M.str.repository.invalidjson+'<pre>'+stripHTML(o.responseText)+'</pre>', 'invalidjson')
|
||||
return;
|
||||
if (o && o.status && o.status > 0) {
|
||||
Y.use('moodle-core-notification-exception', function() {
|
||||
return new M.core.exception(e);
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
// error checking
|
||||
if (data && data.error) {
|
||||
scope.print_msg(data.error, 'error');
|
||||
if (args.onerror) {
|
||||
args.onerror(id,data,p);
|
||||
} else {
|
||||
this.fpnode.one('.fp-content').setContent('');
|
||||
}
|
||||
Y.use('moodle-core-notification-ajaxException', function () {
|
||||
return new M.core.ajaxException(data);
|
||||
});
|
||||
this.fpnode.one('.fp-content').setContent('');
|
||||
return;
|
||||
} else {
|
||||
if (data.msg) {
|
||||
|
||||
@@ -74,6 +74,8 @@ $repooptions = array(
|
||||
'ajax' => true,
|
||||
'mimetypes' => $accepted_types
|
||||
);
|
||||
|
||||
ajax_capture_output();
|
||||
$repo = repository::get_repository_by_id($repo_id, $contextid, $repooptions);
|
||||
|
||||
// Check permissions
|
||||
@@ -97,6 +99,7 @@ switch ($action) {
|
||||
if ($repo->check_login()) {
|
||||
$listing = repository::prepare_listing($repo->get_listing($req_path, $page));
|
||||
$listing['repo_id'] = $repo_id;
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($listing);
|
||||
break;
|
||||
} else {
|
||||
@@ -105,23 +108,27 @@ switch ($action) {
|
||||
case 'login':
|
||||
$listing = $repo->print_login();
|
||||
$listing['repo_id'] = $repo_id;
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($listing);
|
||||
break;
|
||||
case 'logout':
|
||||
$logout = $repo->logout();
|
||||
$logout['repo_id'] = $repo_id;
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($logout);
|
||||
break;
|
||||
case 'searchform':
|
||||
$search_form['repo_id'] = $repo_id;
|
||||
$search_form['form'] = $repo->print_search();
|
||||
$search_form['allowcaching'] = true;
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($search_form);
|
||||
break;
|
||||
case 'search':
|
||||
$search_result = repository::prepare_listing($repo->search($search_text, (int)$page));
|
||||
$search_result['repo_id'] = $repo_id;
|
||||
$search_result['issearchresult'] = true;
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($search_result);
|
||||
break;
|
||||
case 'download':
|
||||
@@ -160,6 +167,7 @@ switch ($action) {
|
||||
$info['file'] = $saveas_filename;
|
||||
$info['type'] = 'link';
|
||||
$info['url'] = $link;
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($info);
|
||||
die;
|
||||
} else {
|
||||
@@ -251,6 +259,7 @@ switch ($action) {
|
||||
// You can cache reository file in this callback
|
||||
// or complete other tasks.
|
||||
$repo->cache_file_by_reference($reference, $storedfile);
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($event);
|
||||
die;
|
||||
} else if ($repo->has_moodle_files()) {
|
||||
@@ -261,6 +270,7 @@ switch ($action) {
|
||||
// {@link repository::copy_to_area()}.
|
||||
$fileinfo = $repo->copy_to_area($reference, $record, $maxbytes, $areamaxbytes);
|
||||
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($fileinfo);
|
||||
die;
|
||||
} else {
|
||||
@@ -286,12 +296,14 @@ switch ($action) {
|
||||
$info['e'] = get_string('error', 'moodle');
|
||||
}
|
||||
}
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($info);
|
||||
die;
|
||||
}
|
||||
break;
|
||||
case 'upload':
|
||||
$result = $repo->upload($saveas_filename, $maxbytes);
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($result);
|
||||
break;
|
||||
|
||||
@@ -304,6 +316,7 @@ switch ($action) {
|
||||
$newfilename = required_param('newfilename', PARAM_FILE);
|
||||
|
||||
$info = repository::overwrite_existing_draftfile($itemid, $filepath, $filename, $newfilepath, $newfilename);
|
||||
ajax_check_captured_output();
|
||||
echo json_encode($info);
|
||||
break;
|
||||
|
||||
@@ -311,6 +324,7 @@ switch ($action) {
|
||||
// delete tmp file
|
||||
$newfilepath = required_param('newfilepath', PARAM_PATH);
|
||||
$newfilename = required_param('newfilename', PARAM_FILE);
|
||||
ajax_check_captured_output();
|
||||
echo json_encode(repository::delete_tempfile_from_draft($itemid, $newfilepath, $newfilename));
|
||||
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user